2

我们在项目中使用 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 有可能吗?

4

2 回答 2

3

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

于 2012-12-06T23:11:07.963 回答
2

有一个拉取请求试图在pytest 存储库中实现这一点。它为 doctest 文件提供了两个全局变量,即fixture_requestget_fixture(它是 的便捷快捷方式fixture_request.getfuncargvalue)。预期用途是:

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

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

于 2013-01-30T20:31:04.430 回答