在测试中完全禁用py.test stdin / stdout capture(类似于py.test -s)

时间:2016-12-22 01:59:00

标签: python python-3.x pytest

(这是How can I make py.test tests accept interactive input?)更具体的版本。

我正在使用py.test,我正在尝试使stdin和stdout正常工作 - 即print()应该立即打印到终端,而input()(这是Python 3.5)应该接受交互式输入线。

(我试图让我的测试用例执行此操作,我知道单元测试不正常,我试图让我的测试用例测试使用stdin和stdout的其他东西)

使用-s标志运行pytest非常符合我的要求,但我宁愿将其作为我的测试模块或单个测试函数中的选项集。特别是因为我只想在一些测试中使用它。 capsys.disabled()作为上下文管理器不会削减它 - 它只处理stdout和stderr,而不是stdin。

有没有办法做到这一点,通过标记/装饰/上下文管理器调用pytest选项,或者在我的模块中“重新连接”sys.stdin / stdout的方法?

谢谢。

1 个答案:

答案 0 :(得分:-2)

http://doc.pytest.org/en/latest/capture.html提供了如何禁用stdout捕获:

np.max(image)
2.9269187

np.min(image)
-1.759946