【问题标题】:Mocking inputs with unittest mock python使用 unittest mock python 模拟输入
【发布时间】:2020-11-11 03:44:43
【问题描述】:

我到处搜索,我觉得我错过了一些超级基本的东西。

我有下面的代码,并且我认为我已经编写了测试,但是在调用 test_input() 函数时我无法确定要添加的正确参数。

我收到错误:文件“C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\unittest\mock.py”,第 1325 行,已修补 返回函数(*newargs,**newkeywargs) TypeError: test_input() 缺少 1 个必需的位置参数:'mock_input'

def input_something():
    input("Enter something")

@patch('builtins.input',return_value = 1)
def test_input(self, mock_input):
    result = input_something()
    self.assertEqual(result, 1)

test_input()

【问题讨论】:

  • 应该将test_input 声明为unittest.TestCase 子类中的方法,而不是作为独立函数,因为self 应该是这些实例之一。有关完整示例,请参阅 this thread。如果您坚持使用独立功能(不使用TestCase 子类),请参阅this answer 以了解如何用作上下文管理器。
  • 如果你使用第二个链接的第一个答案(这个答案)如下,你如何调用Test.test_input()?我以这种方式得到同样的错误。 def input_something(): input("Enter something") class Test(TestCase): @patch('builtins.input',return_value = 1) def test_input(self, mock_input): result = input_something() self.assertEqual(result, 2) Test.test_input()
  • 偶然我找到了答案....而不是“test_input()”,而是“unittest.main()”

标签: python input mocking


【解决方案1】:

偶然我找到了答案......而不是“test_input()”,而是“unittest.main()”

【讨论】:

    猜你喜欢
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2011-07-14
    • 2021-04-12
    • 1970-01-01
    相关资源
    最近更新 更多