Thislink描述了如何使用pytest来捕获控制台输出。我尝试了以下简单代码,但出现错误importsysimportpytestdeff(name):print"hello"+namedeftest_add(capsys):f("Tom")out,err=capsys.readouterr()assertout=="helloTom"test_add(sys.stdout)输出:pythontest_pytest.pyhelloTomTraceback(mostrecentcalllast):File"test_pytest.py",line12,intest_add(sys.s
我有一个带有这样一个模块的python类:xy.pyfroma.bimportClassAclassClassB:defmethod_1():a=ClassA()a.method2()然后我将ClassA定义为:b.pyfromcimportClassCclassClassA:defmethod2():c=ClassC()c.method3()现在在这段代码中,当为xy.py编写测试时,我想mock.patchClassC,有没有办法在python中实现?显然我试过了:mock.patch('a.b.ClassA.ClassC')和mock.patch('a.b.c.ClassC')这
我在使用与pytestfixture集成的模拟包中的补丁装饰器时遇到了一些神秘的事情。我有两个模块:-----testfolder-------func.py-------test_test.py在func.py中:defa():return1defb():returna()在test_test.py中:importpytestfromfuncimporta,bfrommockimportpatch,Mock@pytest.fixture(scope="module")defbrands():return1mock_b=Mock()@patch('test_test.b',mock_b
我需要能够将pytest的.cache目录的位置更改为环境变量WORKSPACE。由于我无法控制服务器权限,我遇到了这个错误,因为我的用户无权写入运行测试的目录:py.error.EACCES:[Permissiondenied]:open('/path/to/restricted/directory/tests/.cache/v/cache/lastfailed','w')有没有办法将.cache目录的路径设置为环境变量WORKSPACE? 最佳答案 您可以通过禁用“cacheprovider”插件来阻止.cache/的创建:py
假设我在pytest.ini文件中禁用了一个pytest插件,例如:[pytest]...addopts=-pno:myplugin现在我希望有时能够使用命令行参数启用它,例如:pytest-pyes:myplugin这可能吗?请,如果您有更好的建议,我也想知道。 最佳答案 要再次加载插件,使用-ppytest_myplugin。这将在-pno:myplugin之后链接时起作用(在命令行上或从pytest.ini的addopts中)。这里发生了什么:当你指定-pno:plugin时,pytestprepends"pytest_"to
前言:实际项目中的用例数量会非常多,几百上千;如果采用单进程串行执行的话会非常耗费时间。假设每条用例耗时2s,1000条就需要2000s≈\approx≈33min;还要加上用例加载、测试前/后置套件等耗时;导致测试执行效率会相对低。想象一下如果开发改动一块代码,我们需要回归一下,这时候执行一下自动化用例需要花费大半个小时或者好几个小时的时间,这是我们无法容忍的。为了节省项目测试时间,需要多个测试用例同时并行执行;这就是一种分布式场景来缩短测试用例的执行时间,提高效率。分布式执行用例的原则:用例之间是相互独立的,没有依赖关系,完全可以独立运行;用例执行没有顺序要求,随机顺序都能正常执行;每个用
我已经用确定了一些长期运行的pytest测试py.test--durations=10我现在想用line_profiler或cprofile之类的东西来检测其中一个测试。我真的很想从测试本身获取配置文件数据,因为pytest设置或拆除很可能是缓慢的一部分。但是考虑到line_profiler或cprofile通常如何参与,我不清楚如何使它们与pytest一起使用。 最佳答案 像这样运行pytest:python3-mcProfile-oprofile-mpytest你甚至可以传入可选参数:python3-mcProfile-opro
我正在编写一个使用py.test进行测试的python程序,现在一个测试也依赖于numpy。我应该在setup.py的哪个位置添加这些依赖项?目前我的setup.py的相关部分如下所示:[...]'version':'0.0.1','install_requires':[],'tests_require':['pytest'],'cmdclass':{'test':PyTest},'extras_require':{'testing':['pytest'],},[...]有两次pytest感觉已经有些奇怪了,我不确定在哪里添加numpy。 最佳答案
“内部函数”是指从定义它的同一模块中调用的函数。我正在使用mock库,特别是patch装饰器,在我的单元测试中。它们是Django单元测试,但这应该适用于任何python测试。我有一个具有多个功能的模块,其中许多功能相互调用。例如(虚构代码,忽略缺少的decimal.Decimal):TAX_LOCATION='StateName,UnitedStates'defadd_tax(price,user):tax=0ifTAX_LOCATION=='StateName,UnitedStates':tax=price*.75return(tax,price+tax)defbuild_cart
我正在为我们正在开发的某个库编写单元测试。该库利用requests.post()向外部服务器执行POSTHTTP请求。在我的UT中,我显然不想联系真正的服务器,而是要模拟响应。为此,我编写了一个函数,如下所示:defmocked_post(url,headers,data,**kwargs):response=Mock()#Somelogic,irrelevanthere.returnresponse我在我的单元测试类周围修补了这个函数:@patch('mylib.requests.post',mocked_post)classMyTest(TestCase):deftest_foo(