我想要一个所有失败测试的列表,以便在session结束时使用。Pytest允许您定义一个Hookpytest_sessionfinish(session,exitstatus),它在session结束时调用,我希望在其中获得该列表。session是一个_pytest.main.Session实例,具有属性items(类型list),但我找不到该列表中的每个item是否通过或失败。如何在session结束时检索所有失败测试的列表?如何在使用pytest-xdist插件时完成,我想在主进程中获取该列表。使用这个插件,session在master中甚至没有items属性:defpytest_
我有一个重固定测试函数,它在某些固定输入时失败(它应该)。我怎样才能指出这一点?这就是我现在正在做的,也许还有更好的方法。我是py.test的新手,所以我很感激任何提示。下一部分是所有输入灯具。仅供引用,example_datapackage_path在conf.test中定义@pytest.fixture(params=[None,'pooled_col','phenotype_col'])defmetadata_key(self,request):returnrequest.param@pytest.fixture(params=[None,'feature_rename_col'
我对pytestHook和插件比较陌生,我不知道如何让我的pytest代码给我测试执行摘要和失败原因。考虑代码:classFoo:def__init__(self,val):self.val=valdeftest_compare12():f1=Foo(1)f2=Foo(2)assertf1==f2,"F2doesnotmatchF1"deftest_compare34():f3=Foo(3)f4=Foo(4)assertf3==f4,"F4doesnotmatchF3"当我使用-v选项运行pytest脚本时,它会在控制台上显示以下结果:=========================
我正在尝试使用pytest进行一些单元测试。我正在考虑做这样的事情:actual=b_manager.get_b(complete_set)assertactualisnotNoneassertactual.columns==['bl','direction','day']第一个断言没问题,但第二个断言出现值错误。ValueError:Thetruthvalueofanarraywithmorethanoneelementisambiguous.Usea.any()ora.all()我认为用pytest断言两个不同列表的相等性不是正确的方法。我如何断言数据框列(列表)等于预期列?谢谢
如果我有两个参数化的fixture,我如何创建一个测试函数,首先用一个fixture的实例调用,然后用另一个fixture的实例调用?我想创建一个以某种方式连接两个现有装置的新装置是有意义的。这适用于“普通”灯具,但我似乎无法使用参数化灯具。这是我尝试过的一个简化示例:importpytest@pytest.fixture(params=[1,2,3])deflower(request):return"i"*request.param@pytest.fixture(params=[1,2])defupper(request):return"I"*request.param@pytest
我正在测试一个可能会死锁的异步函数。我尝试添加一个fixture来限制函数在引发故障之前只运行5秒,但到目前为止它还没有奏效。设置:pipenv--python==3.6pipenvinstallpytest==4.4.1pipenvinstallpytest-asyncio==0.10.0代码:importasyncioimportpytest@pytest.fixturedefmy_fixture():#attempttostartatimerthatwillstopthetestsomehowasyncio.ensure_future(time_limit())yield'egg
假设我有一个这样的测试套件:classSafeTests(unittest.TestCase):#snip20testfunctionsclassBombTests(unittest.TestCase):#snip10differenttestcases我目前正在做以下事情:suite=unittest.TestSuite()loader=unittest.TestLoader()safetests=loader.loadTestsFromTestCase(SafeTests)suite.addTests(safetests)ifTARGET!='prod':unsafetests=l
我有一个Python小项目,我想为它做覆盖率报告。当我运行时py.test-x-sMYPACKAGE--cov-reporthtml--covMYPACKAGE它向我展示了覆盖范围内遗漏的大量行。这些主要是导入和类/方法定义。我确信所有这些行都在我的单元测试中得到处理,第19行和第31-35行验证了这一点。为什么py.test将所有定义标记为“缺失”? 最佳答案 一个常见的原因是模块conftest.py提前导入了应该测量的模块。当然,应该在测试之前评估测试配置。有时无法轻易删除这种依赖性。这就是为什么许多答案推荐如何规避pytes
我正在使用djangoREST框架构建API。为了测试此API,我正在使用pytest和测试客户端,如下所示:deftest_doesnt_find(self,client):resp=client.post(self.url,data={'name':'123'})assertresp.status_code==404或deftest_doesnt_find(self,client):resp=client.get(self.url,data={'name':'123'})assertresp.status_code==404在使用REST框架的一般GET、POST和DELETE类(
我的代码取决于耗时(例如:如果10分钟过去了)在pytest中模拟这个的最佳方法是什么?模块时间的猴子补丁方法?示例代码(测试代码-有点示意图但传达了信息):current_time=datetime.datetime.utcnow()retry_time=current_time+datetime.timedelta(minutes=10)#time_in_dbrepresentstimeextractedfromDBiftime_in_db>retry_time:#performtheretry 最佳答案 FreezeGun可能