2
我有一个功能,我正在写单元测试。我试图断言一些函数在给定输入参数的情况下被调用了正确的参数。例如,函数我的单元测试是在一个名为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
中被实际调用。来自模拟大师的任何见解?
谢谢。您发现的错误是由于我在将我的复杂问题转换为更简单的测试用例时犯的错误。我仍然得到结果,我的返回值无法在“return2”行中识别。也许我已经错过了将问题转化为最小范例的内容。让我编码,看看它是否有效。 – Gabriel 2014-11-21 22:10:38
我已经确认我的最小示例仍然不会产生正确的返回值。我将编辑帖子以反映我正在使用的确切代码 – Gabriel 2014-11-21 23:20:10
@Gabriel:您是否尝试过上述确切示例?你不应该替换你在单元测试中作为参数给出的模拟,你应该根据你的需要修改它。否则,你只是修改一个局部变量。 – 2014-11-22 00:08:01