如何解决Django工厂男孩模拟工厂模型方法
我的模型的保存方法在保存后调用了一个 api。为了测试我的应用程序,我使用 pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package_name>
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org pip setuptools
生成用于测试的对象。但是,api 仍然被调用。
DjangoModelFactory
我试过嘲笑这个方法,但它不起作用
class MyClass(models.Model):
def save(self,*args,**kwargs):
super().save(*args,**kwargs)
self.call_api()
我的问题是,当我在工厂中使用模拟方法时如何使用它?
解决方法
正确的扩展点是Factory._create
:
class MyModelFactory(factory.django.DjangoModelFactory):
class Meta:
model = MyModel
@classmethod
def _create(cls,model_class,*args,**kwargs):
with patch("MyModel.call_api"):
return super()._create(model_class,**kwargs)
请注意:除了factory.base.Factory
之外,您不需要继承factory.django.DjangoModelFactory
,后者已经是前者的子类。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。