我正在为一个系统编写集成测试,我可以通过Web服务调用自动完成大部分测试,但是由于我无法改变的遗留问题,我需要手动测试人员完成几个步骤。
我想使用pytest并创建一个基本上暂停测试执行的夹具并提示控制台输入(例如"在系统中执行XYZ;键入'完成'完成后")和继续进行剩下的测试。
我当然还没有对此做过大量的黑客攻击,但我从pytest docs那里得知:
... stdin设置为“null”对象,在尝试时将失败 从中读取,因为很少需要等待交互 运行自动化测试时输入。
除了在我的情况下,我真的想要等待,除此之外,我的东西看起来是pytest的一个很好的用例。
仍在搜索互联网的提示,但如果有人已经越过这个障碍,我很想知道。
答案 0 :(得分:1)
从版本3开始,您可以temporarily disable捕获:
def test_input(capsys):
with capsys.disabled():
input("hit enter to continue: ")
print("this line is invisible as normal")
给出
(py36) dsm@notebook:~/coding$ py.test -v stdin.py
========================================== test session starts ===========================================
platform linux -- Python 3.6.0, pytest-3.0.7, py-1.4.32, pluggy-0.4.0 -- /home/dsm/sys/miniconda3/envs/py36/bin/python
cachedir: .cache
rootdir: /home/dsm/coding, inifile:
plugins: cov-2.3.1
collected 1 items
stdin.py::test_input hit enter to continue: [here I hit enter]
PASSED
======================================= 1 passed in 23.11 seconds ========================================
答案 1 :(得分:0)