【问题标题】:Interactive Terminal in VSCode?VSCode 中的交互式终端?
【发布时间】:2019-02-28 00:17:14
【问题描述】:

我正在努力提高使用 VSCode 的效率。

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

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

有什么办法可以做到这一点? Jupyter 似乎无法解决问题..

【问题讨论】:

    标签: python terminal visual-studio-code interactive


    【解决方案1】:

    我认为您正在寻找测试。 Python 测试

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

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

    顺便说一下,python 本身有一个 unittest 库,可以很容易地运行这种测试。但是您正在寻找的功能(将东西发送到input())需要在patch 函数的帮助下更高级地实现mock 库。

    让我们进入代码:

    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

    【讨论】:

      猜你喜欢
      • 2022-09-28
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      相关资源
      最近更新 更多