0

例如,请参见下面的代码:

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 方法?

4

2 回答 2

2

如果你想要的只是一个 Django 模型的本地实例,你应该使用构建策略。此外,创建策略调用_create 方法,可以覆盖以满足您的需求。

于 2015-03-14T00:03:36.837 回答
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().

于 2015-03-14T11:09:41.103 回答