GVKun编程网logo

带有xdist的Pytest无法为所有测试打印日志(pytest无法执行)

27

本文将介绍带有xdist的Pytest无法为所有测试打印日志的详细情况,特别是关于pytest无法执行的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关

本文将介绍带有xdist的Pytest无法为所有测试打印日志的详细情况,特别是关于pytest无法执行的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于C++软件添加dump调试打印日志(推荐)、MStest 跳过所有测试用例 .net 应用程序、paho-mqtt的python unittest无法正常工作-简单的语法问题、Pytest 中类范围夹具的意外行为 conftest.pytest_a.pytest_b.py的知识。

本文目录一览:

带有xdist的Pytest无法为所有测试打印日志(pytest无法执行)

带有xdist的Pytest无法为所有测试打印日志(pytest无法执行)

如何解决带有xdist的Pytest无法为所有测试打印日志?

我写了一个使用pytest的端口扫描程序测试。它接收带有IP地址列表的json文件,然后使用parametrize对每个IP地址运行测试。使用Python logging模块使用自定义日志消息创建日志文件。通过使用pytest-xdist进行并行执行,我还可以大大减少运行时间。

问题在于,使用pytest-xdist运行测试时,只有一个测试记录到日志文件中,而CLI输出与预期的完全相同。例如,如果测试针对4个不同的IP地址运行4次,则仅将其中一次运行的结果记录到日志文件中。确实记录下来的测试似乎是随机的,并且每次运行都会发生变化。并行执行测试时,登录到外部文件的正确方法是什么?

# Contents of pytest.ini
[pytest]
log_cli = 1
log_cli_level = CRITICAL
log_cli_format = %(message)s

log_file = port_scanner.log
log_file_level = DEBUG
log_file_format = %(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)
log_file_date_format=%Y-%m-%d %H:%M:%s

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

C++软件添加dump调试打印日志(推荐)

C++软件添加dump调试打印日志(推荐)

C++软件添加dump调试打印日志(推荐)

#include <DbgHelp.h>

#pragma comment(lib,"dbghelp.lib")

LONG WINAPI TopLevelExceptionFilter(struct _EXCEPTION_POINTERS *pExceptionInfo) 
{
    //cout << "Enter TopLevelExceptionFilter Function" << endl; 
   TCHAR szPath[MAX_PATH] = { 0 };
   TCHAR szFileName[MAX_PATH] = { 0 };
   TCHAR* szVersion = "v1.0";
   TCHAR dwBufferSize = MAX_PATH;
   SYstemTIME stLocalTime;
   GetLocalTime(&stLocalTime);
   CreateDirectory(szFileName,NULL);
   StringCchPrintf(szFileName,MAX_PATH,"%s-%04d%02d%02d-%02d%02d%02d-%ld-%ld.dmp",  szVersion,stLocalTime.wYear,stLocalTime.wMonth,stLocalTime.wDay,  stLocalTime.wHour,stLocalTime.wMinute,stLocalTime.wSecond,  GetCurrentProcessId(),GetCurrentThreadId());

    HANDLE hFile = CreateFile(szFileName,GENERIC_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_norMAL,NULL); 
   MINIDUMP_EXCEPTION_informatION stExceptionParam; 
    stExceptionParam.ThreadId  = GetCurrentThreadId(); 
    stExceptionParam.ExceptionPointers = pExceptionInfo; 
    stExceptionParam.ClientPointers  = FALSE; 
    MiniDumpWriteDump(GetCurrentProcess(),GetCurrentProcessId(),hFile,MiniDumpWithFullMemory,&stExceptionParam,NULL); 
    CloseHandle(hFile); 
    getchar();

    return EXCEPTION_EXECUTE_HANDLER;
}

//----------------------------------------------

在程序最开始的地方调用这个函数

SetUnhandledExceptionFilter(TopLevelExceptionFilter);

以上这篇C++软件添加dump调试打印日志(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。

MStest 跳过所有测试用例 .net 应用程序

MStest 跳过所有测试用例 .net 应用程序

如何解决MStest 跳过所有测试用例 .net 应用程序?

MStest 所有测试用例都跳过 .net 应用程序。编写了近 3000 个单元测试用例,所有测试用例都被跳过,甚至调试点都没有达到。 Collogues 成功运行相同的应用程序。我正在使用 Visual Studio 2019。新项目 MSTest 工作正常。我删除了 .vs 文件夹并更新了 VS studio。平台目标 任何 cpu 和 x64 也尝试过。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

paho-mqtt的python unittest无法正常工作-简单的语法问题

paho-mqtt的python unittest无法正常工作-简单的语法问题

我复制了您的代码示例,并使用了paho.mqtt客户端提供的示例进行连接

client.connect("mqtt.eclipse.org",1883,60)

我认为您的问题可能在您的on_connect函数上,您正在引用self.has_connected,但是您没有将self传递给该函数。

这对我来说很有效,请让我知道将self添加到on_connect中是否可以解决您遇到的问题!

class TestBrokerConnection(unittest.TestCase):
def setUp(self):
    self.client = mqtt.Client("Test Client")
    self.client.on_connect = self.on_connect
    self.broker = "mqtt.eclipse.org"
    self.port = 1883
    self.has_connected = False

def on_connect(self,client,userdata,flags,rc):  # connect function
    if rc == 0:
        self.has_connected = True

def test_connection(self):  # test to check connection to broker
    self.client.connect(self.broker,self.port)
    self.client.loop_start()
    time.sleep(2)
    self.client.loop_stop()
    self.assertTrue(self.has_connected)

Pytest 中类范围夹具的意外行为 conftest.pytest_a.pytest_b.py

Pytest 中类范围夹具的意外行为 conftest.pytest_a.pytest_b.py

如何解决Pytest 中类范围夹具的意外行为 conftest.pytest_a.pytest_b.py?

我正在学习 pytest 并研究不同夹具范围的行为。当我运行测试时,我看到类范围固定装置的意外行为。这是我的项目结构。

Pytest_Basics
│   conftest.py
└───pack1
        test_a.py
        test_b.py

这里是每个文件的内容。

conftest.py

import pytest


@pytest.fixture(scope=''session'',autouse=True)
def ses_fix():
    print(''In session fixture'')


@pytest.fixture(scope=''package'',autouse=True)
def pak_fix():
    print(''In package fixture'')


@pytest.fixture(scope=''module'',autouse=True)
def mod_fix():
    print(''In module fixture'')


@pytest.fixture(scope=''class'',autouse=True)
def cls_fix():
    print(''In class fixture'')


@pytest.fixture(scope=''function'',autouse=True)
def func_fix():
    print(''In functon fixture'')

test_a.py

class TestA:

    def test_a1(self):
        assert True

    def test_a2(self):
        assert True

    def test_a3(self):
        assert True

test_b.py

def test_b1():
    assert True


def test_b2():
    assert True


def test_b3():
    assert True

当我使用 pytest -v -s 运行测试时。我得到低于输出。

pack1/test_a.py::TestA::test_a1 In session fixture
In package fixture
In module fixture
In class fixture
In functon fixture
PASSED
pack1/test_a.py::TestA::test_a2 In functon fixture
PASSED
pack1/test_a.py::TestA::test_a3 In functon fixture
PASSED
pack1/test_b.py::test_b1 In module fixture        
In class fixture
In functon fixture
PASSED
pack1/test_b.py::test_b2 In class fixture
In functon fixture
PASSED
pack1/test_b.py::test_b3 In class fixture
In functon fixture
PASSED

我预计类作用域夹具只会运行一次,因为我在 test_a.py 模块中只有一个类。但是,我看到它在 test_b.py 模块中执行测试时正在运行。

是什么导致了这种行为?这是错误还是我对类级别的固定装置了解有限。

环境:Python - 3.9.5,Pytest - 6.2.4

解决方法

这确实是类范围设备的行为方式。 documentation 中没有直接提到它,但可以从中推断出来。如前所述:

Fixtures 在首次被测试请求时创建,并根据其作用域销毁

带有 try{ Intent intent = new Intent("android.intent.action.MAIN"); intent.setClassName("com.android.settings","com.android.phone.settings.RadioInfo"); startActivity(intent); } catch(Exception e){ Toast.makeText(getApplicationContext()," Device not supported",Toast.LENGTH_LONG).show(); } 的夹具应用于会话中的每个测试函数。它们根据其作用域被销毁,这意味着 基于会话、模块或函数的固定装置在会话、模块或函数结束时被销毁,每个测试函数都存在于此。然而,基于类的装置可以在类之外调用,并且为了保持一致,在这种情况下它们必须在函数之后被销毁 - 否则它们永远不会被销毁(如果没有类),或者会跨越类边界。重要的一点是类范围(或任何其他范围)并不意味着夹具仅应用于该范围(例如在类内部),而是应用于任何测试函数,并且范围仅在它被销毁时.

对于不存在于类中的函数,类范围的fixtures的行为就像函数范围的fixtures,但它们在函数范围的fixtures之前被调用并在基于函数的fixtures之后关闭:

conftest.py

autouse=True

test_fixt.py

@pytest.fixture(scope="function",autouse=True)
def fct_fixt():
    print("function fixture start")
    yield
    print("function fixture end")


@pytest.fixture(scope="class",autouse=True)
def class_fixt():
    print("class fixture start")
    yield
    print("class fixture end")
def test_1():
    print("test_1 outside class")

class TestClass:
    def test_1(self):
        print("test_1 inside class")

    def test_class_2(self):
        print("test_2 inside class")

(为了清晰起见添加了缩进)

今天关于带有xdist的Pytest无法为所有测试打印日志pytest无法执行的分享就到这里,希望大家有所收获,若想了解更多关于C++软件添加dump调试打印日志(推荐)、MStest 跳过所有测试用例 .net 应用程序、paho-mqtt的python unittest无法正常工作-简单的语法问题、Pytest 中类范围夹具的意外行为 conftest.pytest_a.pytest_b.py等相关知识,可以在本站进行查询。

本文标签: