模拟Django模型特定的实例函数

我有一个具有两个Django模型实例的测试。我想在Django模型实例中模拟两个函数-仅针对实例之一。我希望其他实例没有模拟。

这是我的代码:

模型:

src

测试:

class MyModel(models.Model):
    id = models.AutoField(primary_key=True)

    def __init__(self,*kargs,**kwargs):
        super(self.__class__,self).__init__(*kargs,**kwargs)

    @property
    def count(self):
        logic....
        return count

    def get_data(self,parameter=None):
        logic.....
        return data

这些模拟不起作用-我收到此错误:

    def test(self):
        data_dict = {....}
        my_model = MyModel(**data_dict)
        my_model.save()

        data_dict2 = {....}
        data_dict2['parent'] = my_model
        my_model2 = MyModel(**data_dict)
        my_model2.save()

        with patch.object(my_model2,'count',lambda x: 20),\
             patch.object(my_model2,'get_data',lambda x: {[{'Id': str(i)} for i in range(20)]}):
            self.assertEqual(my_model2.count,3) # This will also call my_model.get_data and my_model.count - of the instance I am trying to mock

如何模拟Django模型实例函数?

谢谢

menghui1987 回答:模拟Django模型特定的实例函数

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3085593.html

大家都在问