如何暂停正在运行的测试并等待用户输入?
我有一个非传统的测试(python 3,pytest),我想“暂停”在继续测试之前向用户(我)询问id代码。
我知道这不标准,想知道如何解决问题。
示例测试:
def test_oauth_flow(self):
url_jwt = auth(id=client_id, scope=scope)
id_code = webbrowser.open_new(url_jwt)
# pause wait for user input.
# use code to complete flow etc....
auth = auth(code)
assert auth is 1
答案 0 :(得分:0)
嗯,它总是取决于你在测试什么,但我的建议是针对外部API运行ContractTests并记录对后者的响应,这些数据可用于你的功能测试。
要记录响应,你可以使用vcr,它是一个Ruby工具:https://github.com/vcr/vcr,但是还有一个python实现(我没有使用它)https://github.com/kevin1024/vcrpy
答案 1 :(得分:0)
可以从here开始,但pytest的默认捕获需要回拨到sys
:
$ pytest --capture=sys ./tests/
然后此测试功能将在用户提示下停止测试:
def fd_input(prompt):
with os.fdopen(os.dup(1), "w") as stdout:
stdout.write("\n{}? ".format(prompt))
with os.fdopen(os.dup(2), "r") as stdin:
return stdin.readline()