Python魔法模拟器不如预期工作。实际函数被调用。

2024-09-29 03:39:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模型:

class Evaluation(models.Model):
   def abc(self):
      #some logic here
      return something

我还有另一个函数,它使用这个函数:

^{pr2}$

现在,当我为filter_graded方法编写测试时,我模拟is_completely_graded为某些实例返回true/false。测试调用实际的is_completely_graded,而不是尊重mock。我怎么解决这个问题?在

我的测试看起来像:

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)

Tags: 函数模型selfreturnisvaluedeffilter
1条回答
网友
1楼 · 发布于 2024-09-29 03:39:15

您没有传入模拟对象。您正在传递真实数据:

filter_graded(Evaluation.objects.all())

你没有模仿过Evaluation或{}或{}。在

如果您的代码所做的只是用is_completely_graded方法查找对象,只需将mock作为序列传递,不需要任何ORM查询:

^{pr2}$

相关问题 更多 >