gpt4 book ai didi

python - pytest 可以捕获 doctest 的输出吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:55:17 24 4
gpt4 key购买 nike

我正在使用 --doctest-modules 运行 pytest,没有其他选项。

我有一个失败的 doctest 测试,我正在尝试通过向底层代码添加 print() 语句来调试问题。

对于我的常规(非 doctest)测试,捕获输出正在工作并按预期显示,但是 doctest 测试没有在我的 pytest 中显示标准输出 输出,即使我在那里发生了 print() 语句。

我可以将我的 doctest 重写为非 doctest 测试,以便让那些 print() 语句流过,但这听起来像是一个非常迂回的事情。

有什么方法可以告诉 pytest 我希望它也为 doctest 捕获输出吗?

$ python --version
Python 3.7.2
$ pytest --version
This is pytest version 3.10.1, imported from /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/pytest.py
setuptools registered plugins:
pytest-xdist-1.26.1 at /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/xdist/plugin.py
pytest-xdist-1.26.1 at /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/xdist/looponfail.py
pytest-pythonpath-0.7.3 at /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/pytest_pythonpath.py
pytest-mock-1.10.0 at /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/pytest_mock.py
pytest-forked-1.0.1 at /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/pytest_forked/__init__.py
hypothesis-4.4.1 at /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/hypothesis/extra/pytestplugin.py
flaky-3.5.3 at /home/gene/.pythonz/pythons/CPython-3.7.2/lib/python3.7/site-packages/flaky/flaky_pytest_plugin.py

最佳答案

将我的评论变成答案:最简单的方法是打印到标准错误,因为 doctest 只捕获标准输出以进行比较。示例:

import sys


def greet(who):
"""Greet someone.

>>> greet('world')
'Hello world'

>>> greet('fizz')
'Hello fizz'

>>> greet('buzz')
'Hello buzz'
"""

print('input:', who, file=sys.stderr)
return f'Hello {who}'

运行测试:

$ pytest --doctest-modules -sv
======================================= test session starts ========================================
...
collected 1 item

spam.py::spam.greet input: world
input: fizz
input: buzz
PASSED

===================================== 1 passed in 0.03 seconds =====================================

关于python - pytest 可以捕获 doctest 的输出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56957335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com