我有一个模特:
class Evaluation(models.Model):
def abc(self):
#some logic here
return something
说,我有另一个使用它的功能:
def filter_graded(evaluations):
return filter(lambda x: x.is_completely_graded(), evaluations)
现在当我为filter_graded
方法编写测试时,我模拟is_completely_graded
以返回某些实例的true / false。测试调用实际is_completely_graded
而不是尊重模拟。我该如何解决这个问题?
我的测试看起来像:
def test_filter_graded(self):
eval1 = G(Evaluation)
eval2 = G(Evaluation)
eval1.is_completely_graded = mock.MagicMock(return_value=True)
eval2.is_completely_graded = mock.MagicMock(return_value=False)
filter_graded(Evaluation.objects.all())
self.assertEqual(len(result), 1)
答案 0 :(得分:1)
你没有传递模拟对象。您正在传递实际数据:
0
你没有嘲笑filter_graded(Evaluation.objects.all())
或Evaluation
或Evaluation.objects
。
如果您的所有代码都是使用Evaluation.objects.all()
方法查找对象,只需将mocks作为序列传递,不需要任何ORM查询:
is_completely_graded