Questions tagged «pytest»

使用Python进行简单而强大的无样板测试。对于标有pytest的问题,还请添加python标签。

9
如何查看pytest运行期间创建的正常打印输出?
有时候,我只想在代码中插入一些打印语句,然后看看在执行该操作时打印出来的内容。我通常的“锻炼”方式是使用现有的pytest测试。但是,当我运行这些命令时,我似乎看不到任何标准输出(至少从我的IDE PyCharm内部)。 有没有一种简单的方法可以在pytest运行期间查看标准输出?
400 python  logging  output  pytest 

9
如何正确断言pytest中引发了异常?
码: # coding=utf-8 import pytest def whatever(): return 9/0 def test_whatever(): try: whatever() except ZeroDivisionError as exc: pytest.fail(exc, pytrace=True) 输出: ================================ test session starts ================================= platform linux2 -- Python 2.7.3 -- py-1.4.20 -- pytest-2.5.2 plugins: django, cov collected 1 items pytest_test.py F ====================================== FAILURES ====================================== ___________________________________ test_whatever ____________________________________ def test_whatever(): …

18
pytest的PATH问题“ ImportError:没有名为YadaYadaYada的模块”
我使用easy_install在Mac上安装pytest,并开始为文件结构像这样的项目编写测试: repo/ repo/app.py repo/settings.py repo/models.py repo/tests/ repo/tests/test_app.py py.test在repo目录中运行时,所有行为均符合您的预期 但是,当我在linux或Windows上尝试相同的操作时(两者上都装有pytest 2.2.3),只要它从我的应用程序路径中首次导入某些内容,它就会发出吠声。举例来说from app import some_def_in_app 我是否需要编辑PATH才能在这些系统上运行py.test?有人经历过吗?

8
有没有一种方法可以指定从文件运行哪些pytest测试?
有没有办法选择pytest要从文件运行的测试?例如,一个foo.txt包含要执行的测试列表的文件: tests_directory/foo.py::test_001 tests_directory/bar.py::test_some_other_test 或者,是否可以通过pytest从不同目录中选择多个测试,而这些测试的测试名称中没有相同的模式? pytest -k <pattern> 允许使用单一模式。 一种选择是pytest.mark对每个测试使用a ,但是我的要求是对不同文件运行不同的测试组合。 有没有一种方法可以指定多个模式以及每个模式的测试文件名? 要么 有没有一种方法可以在文件中指定确切的测试路径,并将该文件作为输入输入pytest? 要么 是否有可以用于此目的的挂钩函数?
217 python  pytest 

3
在pytest中,conftest.py文件有什么用?
我最近发现了pytest。好像很棒 但是,我认为文档可能会更好。 我正在尝试了解conftest.py文件的用途。 在我的(目前很小的)测试套件conftest.py中,项目根目录下有一个文件。我用它来定义要注入测试的灯具。 我有两个问题: 这是正确的用法conftest.py吗?它还有其他用途吗? 我可以有多个conftest.py文件吗?我什么时候要这么做?示例将被理解。 更一般而言,您如何定义conftest.pypy.test测试套件中的目的和正确使用文件?
216 python  testing  pytest 

6
如何在pytest中打印到控制台?
我正在尝试将TDD(测试驱动的开发)与 pytest。 pytest使用时不会print进入控制台print。 我正在pytest my_tests.py运行它。 的 documentation似乎是说,它应该是默认的工作:http://pytest.org/latest/capture.html 但: import myapplication as tum class TestBlogger: @classmethod def setup_class(self): self.user = "alice" self.b = tum.Blogger(self.user) print "This should be printed, but it won't be!" def test_inherit(self): assert issubclass(tum.Blogger, tum.Site) links = self.b.get_links(posts) print len(links) # This won't print either. 什么都没有打印到我的标准输出控制台上(只是正常的进度以及通过/失败的测试数量)。 我正在测试的脚本包含打印: class …

11
如何配置PyCharm以运行py.test测试?
我想开始为我的Python代码编写单元测试,而py.test框架听起来比Python捆绑的unittest更好。因此,我向项目添加了“ tests”目录,并向其添加了test_sample.py。现在,我想配置PyCharm以运行“ tests”目录中的所有测试。 据称,PyCharm 在其测试运行程序中支持py.test。您应该能够创建运行/调试配置来运行测试,并且PyCharm据称具有专门用于py.test的“创建配置”对话框。但这是他们关于该主题的文档的完整范围,我无法在任何地方找到这个所谓的对话框。 如果在“项目”工具窗口中右键单击目录,则应该看到“创建<名称>”菜单项,但是唯一以“创建”开头的菜单项是“创建运行配置”。好的,也许文档只是错误的,“创建运行配置”听起来确实很有希望。不幸的是,其子菜单中仅有的两项是“ C:\ mypath ...中的Unittests”和“ C:\ mypath ...中的Doctests”,都不适用-我既未使用unittest也未使用doctest。py.test没有菜单项。 如果我打开test_sample.py并在编辑器窗口中单击鼠标右键,则会得到承诺的“创建<名称>”菜单项:有“在test_sa中创建'Unittests ...'...”,然后是“运行” “ test_sa中的单元测试...”和“调试test_sa中的单元测试...”。同样,这都是单元测试框架所特有的。py.test没有。 如果我确实尝试显示“ unittest”的菜单项,则会出现一个对话框,其中包含“名称”,“类型”,带有“文件夹”,“模式”,“脚本”和“类”的“测试”组框”和“函数”等。这听起来与为Python单元测试添加配置的对话框所记录的内容完全不同,而不像应该显示的“名称”和“运行测试”以及“关键字”选项一样在py.test对话框的配置中。对话框中没有任何内容可以切换我要添加的测试框架。 我在Windows上使用Python 3.1.3和pytest 2.0.3的PyCharm 1.5.2。我可以从命令行成功运行py.test测试,所以这不是像pytest未正确安装那样的简单操作。 如何配置PyCharm以运行py.test测试?
162 python  pycharm  pytest 

7
pytest:断言几乎相等
如何assert almost equal使用py.test处理浮点数而不求助于以下内容: assert x - 0.00001 <= y <= x + 0.00001 更具体地说,了解一种精巧的解决方案以快速比较浮点对而不用拆开它们将很有用: assert (1.32, 2.4) == i_return_tuple_of_two_floats()

2
打印测试执行时间并使用py.test固定慢速测试
我正在使用py.test在CI服务器上运行单元测试。测试使用通过网络获取的外部资源。有时测试跑步者花费的时间太长,导致测试跑步者被中止。我不能在本地重复这些问题。 有没有一种方法可以使py.test打印出(缓慢)测试的执行时间,因此固定有问题的测试变得更加容易?
118 python  pytest 

6
将参数传递给灯具功能
我正在使用py.test来测试包装在python类MyTester中的某些DLL代码。为了进行验证,我需要在测试期间记录一些测试数据,然后再进行更多处理。由于我有许多test _...文件,因此我想对大多数测试重用测试器对象的创建(例如MyTester的实例)。 由于tester对象是获得DLL变量和函数的引用的对象,因此我需要将DLL变量列表传递给每个测试文件的tester对象(要记录的变量对于test_是相同的。 。文件)。列表的内容将用于记录指定的数据。 我的想法是像这样做: import pytest class MyTester(): def __init__(self, arg = ["var0", "var1"]): self.arg = arg # self.use_arg_to_init_logging_part() def dothis(self): print "this" def dothat(self): print "that" # located in conftest.py (because other test will reuse it) @pytest.fixture() def tester(request): """ create tester object """ # how to use …
114 python  fixtures  pytest 

28
pytest无法导入模块,而python可以
我正在使用Python开发包。我使用virtualenv。我在virtualenv的.pth路径中将模块的根目录设置为路径,以便在开发代码并进行测试时可以导入软件包的模块(问题1:这是一个好方法吗?)。这工作正常(这是一个示例,这是我想要的行为): (VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ python Python 2.7.12 (default, Jul 1 2016, 15:12:24) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from rc import ns >>> exit() (VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ python tests/test_ns.py issued command: echo hello command output: hello 但是,如果我尝试使用PyTest,则会收到一些导入错误消息: (VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ pytest =========================================== test session …
114 python  import  pytest 

5
如何为带有测试的pytest类正确设置和拆卸?
我正在使用硒进行端到端测试,但无法获得使用方法setup_class和teardown_class方法。 我需要在setup_class方法中设置浏览器,然后执行一堆定义为类方法的测试,最后退出teardown_class方法中的浏览器。 但是从逻辑上讲,这似乎是一个糟糕的解决方案,因为实际上我的测试不适用于类,而适用于对象。我self在每个测试方法中传递参数,因此可以访问对象的vars: class TestClass: def setup_class(cls): pass def test_buttons(self, data): # self.$attribute can be used, but not cls.$attribute? pass def test_buttons2(self, data): # self.$attribute can be used, but not cls.$attribute? pass def teardown_class(cls): pass 甚至为类创建浏览器实例似乎也不正确。应该为每个对象分别创建,对吗? 因此,我需要使用__init__and __del__方法代替setup_classand teardown_class?

4
如何在运行pytest测试时随意执行ipdb.set_trace()
我正在将pytest用于我的测试套件。在捕获复杂的组件间测试中的错误时,我想放在import ipdb; ipdb.set_trace()代码的中间,以便我对其进行调试。 但是,由于pytest陷阱sys.stdin / sys.stdout ipdb失败。使用pytest进行测试时如何使用ipdb。 我对出现故障后跳转到pdb或ipdb并不感兴趣,但可以在代码中的任何位置放置中断,并能够在发生故障之前在那里进行调试。
96 pytest 

5
如何禁止py.test内部弃用警告
有没有办法抑制pytest的内部弃用警告? 语境:我期待评估从移植测试套件的难度nose来pytest。该套件相当大,并且大量使用基于nose样式yield的测试生成器。 我想首先确保现有测试通过pytest通过,然后也许将测试生成器更改为parameterized。 仅仅在$ pytest path-to-test-folderpytest 3.0.4中运行完全由以下页面组成: WC1 ~repos/numpy/numpy/lib/tests/test_twodim_base.py yield tests are deprecated, and scheduled to be removed in pytest 4.0 有没有办法关闭这些警告?
94 python  pytest 

7
如何用模拟模拟只读属性?
您如何使用模拟模拟只读属性? 我试过了: setattr(obj.__class__, 'property_to_be_mocked', mock.Mock()) 但问题在于它随后适用于该类的所有实例...这破坏了我的测试。 您还有其他想法吗?我不想模拟整个对象,而只是模拟这个特定的属性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.