VSCode中的交互式终端?

时间:2019-02-28 00:17:14

标签: python terminal visual-studio-code interactive

我正在尝试简化使用VSCode的效率。

我希望能够在终端中运行包含input()命令的脚本,并在运行时能够立即开始与程序进行交互。

实际上,我必须运行该程序,然后单击以与之交互。

有什么办法可以做到这一点? Jupyter似乎并不能解决问题。

1 个答案:

答案 0 :(得分:0)

我认为您正在搜索测试。 Python测试

有很多方法可以为您的代码获取自动化的标准输入,但是结果更好的方法(尽管初学者之间不常见)是单元测试。它是这样的:

  1. 您可以写下代码,然后将其划分为多个函数(尽管可以在单个函数中创建它,但是应该避免这样做)。
  2. 您编写了一个单元测试,该单元测试将一些预制参数发送到您的代码。
  3. 您运行测试并检查是否有问题。

顺便说一句,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