我正在试着打一个电话检查一个用户的全名。我已经使用mock编写了下面的方法来实现这一点。你知道吗
def test_UserDisplayName(self):
appModel = Mock()
eval = appModel.eval.return_value
eval.userDisplayName.return_value = 'JohnDoe'
self._SummaryModel.AppModel = appModel
actual = self._SummaryModel.UserDisplayName()
self.assertEqual(actual, 'JohnDoe')
这是它正在调用的方法。 你知道吗
def UserDisplayName(self):
return self.AppModel().eval().userDisplayName()
如果我将调试器附加到上面的行,并在shell中运行它,那么它就可以工作了
[PAUSED] >>> self.AppModel().eval().userDisplayName()
'JohnDoe'
[PAUSED] >>>
但是当运行测试用例失败时,我得到的是地址而不是值。你知道吗
======================================================================
FAIL: test_UserDisplayName (unittests.model.SummaryModelTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/unittests/summary_model.py", line 112, in test_UserDisplayName
self.assertEqual(actual, 'JohnDoe')
AssertionError: <Mock name='mock.userDisplayName()' id='233406864'> != 'JohnDoe'
----------------------------------------------------------------------
Ran 1 test in 0.010s
FAILED: (failures=1)
我做错什么了?你知道吗
您的代码也会调用
AppModel
,因此您需要为此调整其他引用:演示:
但是,您的
<Mock name='mock.userDisplayName()' id='233406864'>
对象显示了一个mock.userDisplayName()
的名称,这表明返回值是通过直接使用self.AppModel.userDisplayName()
生成的。你知道吗相关问题 更多 >
编程相关推荐