我正在尝试简化使用VSCode的效率。
我希望能够在终端中运行包含input()命令的脚本,并在运行时能够立即开始与程序进行交互。
实际上,我必须运行该程序,然后单击以与之交互。
有什么办法可以做到这一点? Jupyter似乎并不能解决问题。
答案 0 :(得分:0)
我认为您正在搜索测试。 Python测试
有很多方法可以为您的代码获取自动化的标准输入,但是结果更好的方法(尽管初学者之间不常见)是单元测试。它是这样的:
顺便说一句,python本身有一个unittest库,可以很容易地运行这种测试。但是,您要寻找的功能(将内容放入input()
)需要在mock
函数的帮助下对patch
库进行更高级的实现。
让我们进入代码:
App.py
def printName():
return input("What's your name man?")
Test.py
from unittest.mock import patch
import app
@patch('builtins.input', lambda *args: 'Nolan')
def test_print_name():
# The why we call args there is explained in the link bellow
answer = app.printName() # Will call buitins.input inside it, but it's patched so don't worry about it
assert answer == 'Nolan' # True, so no errors here
if __name__ == "__main__":
test_query_y()
此代码基于this answer
通过不使用类,您将失去unittest库中的许多功能。我的意思是,您可以按原样使用它(尽管这可能不是一个好习惯)。因此,我建议您进一步了解lib:3