当前位置: 首页 > 面试题库 >

如何使用输入调用测试功能?

万俟承望
2023-03-14
问题内容

我有一个用Python编写的控制台程序。它使用以下命令询问用户问题:

some_input = input('Answer the question:', ...)

如何测试包含对inputusing的调用的函数pytest?我不想强迫测试人员多次输入文本只是为了完成一次测试运行。


问题答案:

您可能应该模拟内置input功能,可以在每次测试后使用teardown提供的功能pytest还原为原始input功能。

import module  # The module which contains the call to input

class TestClass:

    def test_function_1(self):
        # Override the Python built-in input method 
        module.input = lambda: 'some_input'
        # Call the function you would like to test (which uses input)
        output = module.function()  
        assert output == 'expected_output'

    def test_function_2(self):
        module.input = lambda: 'some_other_input'
        output = module.function()  
        assert output == 'another_expected_output'

    def teardown_method(self, method):
        # This method is being called after each test case, and it will revert input back to original function
        module.input = input

更好的解决方案是将mock模块与一起使用with statement。这样,您就不需要使用拆解,并且修补的方法只会存在于with范围内。

import mock
import module

def test_function():
    with mock.patch.object(__builtins__, 'input', lambda: 'some_input'):
        assert module.function() == 'expected_output'


 类似资料:
  • 问题内容: 我试图用Python在用户输入命令的地方做一个“游戏”。但是,我不知道您是否可以将该输入用作函数名。这是我目前的努力: 在这里,输入是移动的,就像我想尝试调用该函数一样(潜在的最终用户可能会)。但是,出现以下错误: 我想知道是否有什么方法可以允许用户在游戏中“移动”,程序通过调用“移动”功能来实现。 问题答案: 看起来您正在使用python3.x,其中返回了一个字符串。要恢复pytho

  • 问题内容: 我正在使用JavaScript测试运行程序“摩卡”。 我的测试失败了,因此我将使用进行调试。 但是运行测试时,没有输出(仅来自Mocha的测试结果)。看来Mocha已捕获并抑制了我的输出! 如何让Mocha显示输出?(对于失败的测试)? 编辑: 抱歉!- 在测试期间可以正常工作!我肯定一直期望它抑制输出,而且我没有正确检查自己的代码。感谢您的回应。所以…话虽如此…也许抑制通过测试的输出

  • 我正在尝试从文件中读取第一个字节,并通过返回布尔值的方法运行这些字节。 这个布尔值告诉我文件是否属于特定类型。 如果该方法在文件类型的字节上返回 true,则我想获取剩余的字节并通过其他方法运行它们。如果为 false,则通过其他方法运行剩余的字节。 我正在尝试使用标记,但没有成功。 问题是从我停下来的地方继续,同时将字节数组保持在块中(用于处理大文件)。此外,我只返回了字节,而不是剩余的字节。

  • 我想针对使用回调参数的RESTendpoint编写一些测试。可能听起来很困惑,所以这里有一个解释: > 服务器回复200和一些json 服务器向(基于提供的回调URL),带有一些json负载 我使用TestNG和Rest assured(非强制性)构建了一个测试。我的问题是如何验证初始回复和在回调URL处接收的消息。我首先想到的一种(可能是幼稚的)方法是实现一个HTTP服务器,它侦听,当有东西出现

  • 问题内容: 我正在编写一个Wordpress MU插件,它在每个帖子中都包含一个链接,并且我想在用户单击此链接时使用ajax调用插件功能之一,然后使用该功能的输出动态更新链接文本。 。 我陷入了ajax查询。我已经有了这种复杂的,显然有点乱的方法,但是它不是很有效。在插件中包含Ajax功能的“正确”或“ wordpress”方式是什么? (下面是我当前的黑客代码。单击生成链接时,在wp页面中得到的

  • 问题内容: 我有一个简单的功能要测试: 但是,如何测试该函数实际发送到标准输出的内容呢?Test :: Output在Perl中实现了我想要的功能 但这对于每个测试来说都是很多额外的工作。我希望有一种更标准的方法,或者也许是一个抽象库来处理此问题。 问题答案: 还需要记住的一件事是,没有什么可以阻止您编写避免编写样板代码的函数。 例如,我有一个使用的命令行应用程序,我编写了以下函数: 然后像这样使