是否可以在doctest文件中使用py.test fixtures?

时间:2012-12-05 11:51:05

标签: python pytest

我们在项目中使用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来说是否可行?

2 个答案:

答案 0 :(得分:3)

目前不支持。 pytest需要在收集时知道哪些灯具将用于doctest。如果我们能够想出一种方法来声明将要使用哪些灯具,那么添加对_pytest/doctest.py的支持应该不难。也许它也可以自动找出doctest需要哪些灯具,不确定。

答案 1 :(得分:2)

有一个pull request试图在pytest repository处执行此操作。它为doctest文件提供了两个全局变量,即fixture_requestget_fixture(这是fixture_request.getfuncargvalue的便捷捷径)。预期用途是:

>>> browser = get_fixture('browser')
>>> browser.open('some_url')

这与上面Holger建议的.. pytest-fixtures: ...行不同,但更容易实现...... :)不用说,当然可以讨论它了!