例如,请参阅以下代码:
class Thing(Model):
def save(force=False, *args, **kwargs):
if not force:
raise Exception("don't save!")
FactoryBoy调用model.get_or_create()调用model.save()。有没有办法在FactoryBoy中创建此模型的实例而不修改save或get_or_create方法?
答案 0 :(得分:2)
如果你想要的只是Django模型的本地实例,你应该使用build strategy。此外,创建策略会调用_create
method,可以覆盖该策略以满足您的需求。
答案 1 :(得分:2)
factory.django.DjangoModelFactory
的默认行为是调用MyModel.objects.create()
。
如果目标只针对一次测试中的单个调用,请使用MyModelFactory.build()
。
如果目标是从不调用create()
,请在声明中设置以下内容:
class MyModelFactory(factory.django.DjangoModelFactory):
class Meta:
model = models.MyModel
strategy = factory.BUILD_STRATEGY
这会将MyModelFactory()
映射到MyModelFactory.build()
而不是DjangoModelFactory
默认值MyModelFactory.create()
。