我正在学习如何使用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中找不到任何内容。但是在错误消息中,它说我的日志在捕获的标准
您能否给出一些在Django单元测试中使用Mock()的清晰示例?我想更清楚地了解它。更新:我想出了一些东西,所以我在下面分享。 最佳答案 第1部分:基础知识frommockimportMock模拟对象是一种对象,它是一种用于代码的Dummy我们不想被执行,但我们想知道一些信息(调用次数,调用参数)。此外,我们可能希望为该代码指定一个返回值。让我们定义一个简单的函数:deffoo(value):returnvalue+value现在我们准备为它创建一个Mock对象:mock_foo=Mock(foo,return_value='mo
将覆盖与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
给定这段Python代码:elifrequest.method=='DELETE':try:os.remove(full_file)returnjsonify({'results':'purged%s'%full_file})exceptOSErrorase:ife.errno!=errno.ENOENT:raisereturnjsonify({'results':'filenotpresent:%s'%full_file})我想测试所有可能的路径,包括异常处理。使用Mock,很容易引发一个异常,我用这段代码来做到这一点:withpatch('os.remove',new=Mock(s