我正在学习如何使用py.test在Python中完成测试。我正在尝试测试使用其他库(如mock)时非常常见的特定情况。具体来说,测试函数或方法是否使用正确的参数调用另一个可调用对象。不需要返回值,只需确认被测方法正确调用即可。这是一个直接来自docs的例子:>>>classProductionClass:...defmethod(self):...self.something(1,2,3)...defsomething(self,a,b,c):...pass...>>>real=ProductionClass()>>>real.something=MagicMock()>>>real.
Pytest允许您通过在插件中实现一个名为pytest_runtest_teardown的函数来Hook每个测试的拆解阶段:defpytest_runtest_teardown(item,nextitem):passitem上是否有属性或方法可用于确定刚刚运行完的测试是通过还是失败?我找不到关于pytest.Item的任何文档,并且搜索源代码并在ipdb中游玩没有发现任何明显的东西。 最佳答案 你也可以考虑pytest_runtest_makereport中的call.excinfo:defpytest_runtest_makere
我们成功地使用pytest(Python3)来运行测试套件来测试一些硬件设备(电子设备)。对于这些测试的一个子集,我们需要测试人员更改硬件布置,然后再将其改回。我的方法是使用附加到相关测试的模块级固定装置(它们都在一个单独的模块中),带有两个input调用:@pytest.fixture(scope="module")defdisconnect_component():input('Disconnectcomponent,thenpressenter')yield#Atthispointallthetestswiththisfixtureareruninput('Connectcomp
假设我有下一个测试结构:test/module1/test1.pymodule2/test2.pymodule3/test3.py我如何设置某些方法在所有这些测试之前只调用一次? 最佳答案 您可以使用自动装置:#contentoftest/conftest.pyimportpytest@pytest.fixture(scope="session",autouse=True)defexecute_before_any_test():#yoursetupcodegoeshere,executedaheadoffirsttest参见pyt
我正在尝试对一些使用日志库的算法进行单元测试。我有一个可以创建记录器的装置。在我的第一个测试用例中,我没有使用这个fixture,而是使用打印记录到标准输出。此测试用例通过。在我的第二个测试用例中,我使用了这个fixture,但没有在pytest文档中记录。我只是在我的测试中调用相关函数来获取记录器。然后我使用记录器记录到标准输出。此测试用例通过。在我的第三个测试用例中,我按照pytest文档中的说明使用了这个fixture。fixture作为参数传递给测试函数。然后我使用记录器记录到标准输出。此测试用例失败!它在stdout中找不到任何内容。但是在错误消息中,它说我的日志在捕获的标准
将覆盖与pytests结合使用是一个非常有用的工具。Html报告允许很好的输出,但是通过命令行找不到修改默认输出目录(htmlcov)的选项示例命令行:python-mpytestlib_being_tested\tests--covlib_being_tested.module--cov-report=html 最佳答案 现在(3年后)您可以直接在命令行中更改默认输出目录:python-mpytest--cov--cov-report=html:reports/html_dir--cov-report=xml:reports/co
我正在使用pythonpytest来运行我的单元测试。我的项目文件夹是:Main-包含数据文件:A.txtMain\Tests-我运行pytest的文件夹Main\Tests\A_test-包含测试文件的文件夹A_test文件夹中的测试使用文件A.txt(位于Main文件夹中)。我的问题是,当我运行py.test时,测试失败,因为它找不到A.txt。我发现是因为pytest在运行测试时使用了路径Main\Test,而不是将路径改为Main\Tests\A_test(我是在测试文件中打开A.txt时使用相对路径)我的问题:有没有办法让pytest将目录更改为它为每个测试执行的测试文件夹?
我正在开始使用pytest。我已经配置了pytest,无论如何我找不到关于使用pytest进行Django特定测试的资源。如何使用pytest_django测试模型?我已经问了一个关于单元测试的问题,howdoIefficientlytestthisDjangomodel?我想知道如何使用py.test编写相同的测试?在模型下方添加用unittest编写的测试。被测模型是,classUser(AbstractBaseUser,PermissionsMixin):username=models.CharField(max_length=25,unique=True,error_messa
我用一个新的更简单的假设置重新创建了这个问题。我有一个框架需要来自pytest的命令channel变量。此变量称为环境,但当我尝试访问该变量时,我得到一个AttributeError:“模块”对象没有属性“配置”。这是我的测试设置:我知道py.test按以下顺序加载:Pytest插件外部插件conftest.py文件,从外层文件到内层文件。我想我遇到了一个问题,当我加载内部conftest.py时,我尝试导入框架。当我导入框架时,它会尝试访问py.test变量。这个变量,即使pytest已经在我的outer-conftest.py的pytest_addoption()部分中看到它,还没
我开始使用Flask-SQLAlchemy编写测试,我想为它们添加一些固定装置。我的开发数据库和大量表格中有很多好的数据,因此手动写入数据会很烦人。我真的很想将开发数据库中的数据采样到固定装置中,然后使用它们。执行此操作的好方法是什么? 最佳答案 我会用factoryboy要创建一个模型工厂,您只需执行以下操作:importfactoryfrom.importmodelsclassUserFactory(factory.Factory):classMeta:model=models.Userfirst_name='John'last