我有两个功能。函数function2()
调用function1()
。
原始function1()
从参数中获取一个值并返回一个值。我想用mock function1()
测试function2()
。但mockfunction1()
不接受参数。问题出在哪里?你知道吗
调用没有参数的mockfunction1()
不是问题。如果我想使用参数,测试将以错误结束。你知道吗
function1_mock() missing 1 required positional argument: 'parameter'.
# application.py
def function1(parameter1):
return parameter1
def function2(parameter2):
return function1('function1') + parameter2
# test_application.py
import unittest
import unittest.mock
import application
class TestCalling(unittest.TestCase):
def function1_mock(self, parameter):
return parameter
@unittest.mock.patch('application.function1', side_effect=function1_mock)
def test_function2(self, mock_function):
self.assertEqual(application.function2('function2'),
'function1function2')
if __name__ == '__main__':
unittest.main()
在这种情况下,测试是错误的
^{2}$我想写语法正确的代码,其中模拟函数接受参数。你知道吗
我解决了这个问题。我将类
TestCalling()
中的方法function1_mock(self, parameter)
转换为函数function1_mock(parameter)
。这是正确的。 完整代码:致DroidX86:谢谢你的提示。你知道吗
此函数接受2个参数。对象
self
&;parameter
。你知道吗这只需要一个。因此,当代码调用它时,它只传递一个参数。你知道吗
试试这个:
这将把
self
参数添加到模拟调用中记住:
obj.func()
是__Classname__func(obj)
的语法糖相关问题 更多 >
编程相关推荐