我有一个用Python编写的控制台程序。它使用以下命令询问用户问题:
some_input = input('Answer the question:', ...)
如何测试包含对input
using的调用的函数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中实现了我想要的功能 但这对于每个测试来说都是很多额外的工作。我希望有一种更标准的方法,或者也许是一个抽象库来处理此问题。 问题答案: 还需要记住的一件事是,没有什么可以阻止您编写避免编写样板代码的函数。 例如,我有一个使用的命令行应用程序,我编写了以下函数: 然后像这样使