【发布时间】: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()”