暂停PyTest并等待用户输入

时间:2018-05-31 12:33:40

标签: python python-3.x pytest

如何暂停正在运行的测试并等待用户输入?

我有一个非传统的测试(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

2 个答案:

答案 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()