Django 伪造者使用Factory Boy创建的所有相等值
在Django项目中使用Factory Boy和Faker,我注意到使用Factory Boy创建的对象,以及在本例中使用Faker创建名称公司名称不会为新对象创建唯一的名称 主要问题:第一个例子,当我们将Faker用作单独的库时,我们使用它是错误的吗?或者,当与Factory Boy一起使用时,Factory Boy的固有特性是否阻止Faker作为单独的库正确工作Django 伪造者使用Factory Boy创建的所有相等值,django,faker,factory-boy,Django,Faker,Factory Boy,在Django项目中使用Factory Boy和Faker,我注意到使用Factory Boy创建的对象,以及在本例中使用Faker创建名称公司名称不会为新对象创建唯一的名称 主要问题:第一个例子,当我们将Faker用作单独的库时,我们使用它是错误的吗?或者,当与Factory Boy一起使用时,Factory Boy的固有特性是否阻止Faker作为单独的库正确工作 import factory ... from faker import Faker from faker.providers
import factory
...
from faker import Faker
from faker.providers import company
...
fake = Faker('nl_NL')
fake.add_provider(company)
class PolicyBrandFactory(factory.django.DjangoModelFactory):
class Meta:
model = PolicyBrand
name = fake.company()
Pycharm调试器屏幕截图中的结果:
重点是非唯一的公司名称
在Factory Boy文档中,我读到他们在Facker周围有一个包装器,使用它我确实获得了独特的结果:
import factory
...
class PolicyBrandFactory(factory.django.DjangoModelFactory):
class Meta:
model = PolicyBrand
name = factory.Faker('company', locale='nl_NL')
结果是:
您正在使用一个类变量。名称是在定义类时定义的,它是单个调用fake.company的结果
如果这是一个简单的Django模型,我希望必须重写uu init uuu,但我不知道factory.Django.DjangoModelFactory以及它可能执行的元分类魔术。您使用的是一个类变量。名称是在定义类时定义的,它是单个调用fake.company的结果
如果这是一个简单的Django模型,我希望必须重写uu init uu,但我不知道factory.Django.DjangoModelFactory以及它可能执行的元分类魔术。类似于Django表单并设置默认日期,名称值是在首次定义类时设置的 你需要使用
与Django表单和设置默认日期类似,名称值是在首次定义类时设置的 你需要使用
在factory_boy中使用Faker的受支持方式是通过助手: 类PolicyBrandFactoryfactory.django.DjangoModelFactory: 类元: 型号=品牌 name=factory.Faker'company',locale='nl\u nl' 这也将把骗子的随机种子管理和工厂男孩的随机种子联系起来 如果要在没有帮助器的情况下使用,则必须使用其中一个惰性帮助器: 伪造的 类PolicyBrandFactoryfactory.django.DjangoModelFactory: 类元: 型号=品牌 name=factory.LazyFunctionfake.company name_alt=factory.LazyAttributelambda obj:fake.company
在factory_boy中使用Faker的受支持方式是通过助手: 类PolicyBrandFactoryfactory.django.DjangoModelFactory: 类元: 型号=品牌 name=factory.Faker'company',locale='nl\u nl' 这也将把骗子的随机种子管理和工厂男孩的随机种子联系起来 如果要在没有帮助器的情况下使用,则必须使用其中一个惰性帮助器: 伪造的 类PolicyBrandFactoryfactory.django.DjangoModelFactory: 类元: 型号=品牌 name=factory.LazyFunctionfake.company name_alt=factory.LazyAttributelambda obj:fake.company
天哪,我自己都没意识到。我想又回到学校了,谢谢!天哪,我自己都没意识到。我想又回到学校了,谢谢!
class PolicyBrandFactory(factory.django.DjangoModelFactory):
class Meta:
model = PolicyBrand
name = fake.company()
name = factory.LazyAttribute(lambda _: fake.company())