我们在项目中使用py.test并在大多数测试用例中使用fixture。但我认为不可能在doctest文件中使用灯具。
举一个代码片段的例子:我在conftest.py中有一个浏览器夹具,如:
@fixture
def browser(request):
from wsgi_intercept import zope_testbrowser
browser = zope_testbrowser.WSGI_Browser()
[...]
return browser
并在文件test_browser.txt中使用它,如:
>>> browser.open('some_url')
>>> browser.url == 'some_url'
True
但是我无法找到将夹具放入doctest文件的方法。这对py.test来说是否可行?
答案 0 :(得分:3)
目前不支持。 pytest需要在收集时知道哪些灯具将用于doctest。如果我们能够想出一种方法来声明将要使用哪些灯具,那么添加对_pytest/doctest.py
的支持应该不难。也许它也可以自动找出doctest需要哪些灯具,不确定。
答案 1 :(得分:2)
有一个pull request试图在pytest repository处执行此操作。它为doctest文件提供了两个全局变量,即fixture_request
和get_fixture
(这是fixture_request.getfuncargvalue
的便捷捷径)。预期用途是:
>>> browser = get_fixture('browser')
>>> browser.open('some_url')
这与上面Holger建议的.. pytest-fixtures: ...
行不同,但更容易实现...... :)不用说,当然可以讨论它了!