我正在运行pytest
的{{1}},没有其他选择。
我有一个--doctest-modules
测试失败,并且我正在尝试通过在基础代码中添加doctest
语句来调试问题。
捕获输出正在按常规(非{print()
)测试正常工作并显示,但是doctest
测试没有在我的doctest
输出中显示stdout,即使我pytest
语句在那里发生。
我可以将print()
重写为非doctest
测试,以使那些doctest
语句能够通过,但这听起来像是一件round回的事情。
是否可以告诉print()
我也希望它捕获pytest
的输出?
doctest
答案 0 :(得分:2)
将我的评论变成答案:最简单的方法是打印到stderr,因为doctest
仅捕获stdout进行比较。示例:
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 =====================================