【发布时间】:2026-01-31 22:40:01
【问题描述】:
我有一个正在为其编写单元测试的函数。我试图断言在给定输入参数的情况下使用正确的参数调用了许多函数。例如,我正在单元测试的函数在一个名为 validate.py 的文件中
def function_to_test(arg1):
print 'return2: ', _sub_function_1()
arg1 = _sub_function_1(arg1)
arg1 = _sub_function_2(arg1)
arg1 = _sub_function_3(arg1)
return arg1
def _sub_function_1(arg1):
pass
def _sub_function_2(arg1):
pass
def _sub_function_3(arg1):
pass
我在一个名为 dotest.py 的文件中进行了单元测试,
import validate
import unittest
import mock
class TestFunctionToTest(unittest.TestCase):
@mock.patch('validate._sub_function_1')
def test_basic(self, m_sub_function_1):
m_sub_function_1 = mock.Mock(return_value='rv_sf1')
dum_arg1 = 'dum'
out = validate.function_to_test(dum_arg1)
print 'called?: ', m_sub_function_1.called
if __name__ == '__main__':
unittest.main()
运行这个测试的结果是,
run -i dotest.py
return2: <MagicMock name='_sub_function_1()' id='4502266128'>
called?: False
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
由于某种原因,在对 _sub_function_1 的调用中无法识别为模拟函数定义的返回值。我想检查这个函数是否真的在function_to_test 中被调用。来自模拟大师的任何见解?
【问题讨论】:
标签: python unit-testing mocking