在DjangoModelFactory

时间:2019-05-14 08:47:25

标签: python django testing faker

我使用Django Faker生成随机数据,效果很好。

我需要检查一个模型,确定在特殊情况下两个字段responsiblecustomer是相同的。

这是我的工厂班级:

class FirstQuoteRequest(DjangoModelFactory):

    label = Faker("sentence")
    description = Faker("sentences")
    customer = SubFactory(UserFactory)
    responsible = customer

通过输入responsible = customer,我以为我要添加一个客户价值的克隆,但是在这种情况下,它是函数的一个克隆,该函数返回一个随机值,这不是我想要的。

我想到过像这样使用@post_generation

    @post_generation
    def responsible(self, create: bool, extracted: Sequence[Any], **kwargs):
        self.responsible = self.customer
        self.save()

但是会引发完整性错误。是否有使客户和负责人之间保持平衡的方法?哪一个?

1 个答案:

答案 0 :(得分:0)

问题出在我方法的名称上,该名称不应与字段名称相同。因此解决方案是:

class FirstQuoteRequest(DjangoModelFactory):

    label = Faker("sentence")
    description = Faker("sentences")
    customer = SubFactory(UserFactory)
    responsible = customer

    @post_generation
    def clone_customer(self, create: bool, extracted: Sequence[Any], **kwargs):
        self.responsible = self.customer
        self.save()

希望,有帮助!