我有一个用 Python 编写的控制台程序。它使用以下命令向用户提问:
some_input = input('Answer the question:', ...)
如何使用 pytest
测试包含对 input
的调用的函数?
我不想强制测试人员多次输入文本以完成一次测试运行。
最佳答案
正如编译器所建议的那样,pytest 为此提供了一个新的 monkeypatch 固定装置。一个 monkeypatch object 可以更改类中的属性或字典中的值,然后在测试结束时恢复其原始值。
在这种情况下,内置的 input
函数是 python 的 __builtins__
字典的值,所以我们可以这样修改它:
def test_something_that_involves_user_input(monkeypatch):
# monkeypatch the "input" function, so that it returns "Mark".
# This simulates the user entering "Mark" in the terminal:
monkeypatch.setattr('builtins.input', lambda _: "Mark")
# go about using input() like you normally would:
i = input("What is your name?")
assert i == "Mark"
关于python - 如何使用输入调用测试函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35851323/