Python 如何使用来自工厂的假冒产品
Python 如何使用来自工厂的假冒产品,python,django,factory,faker,factory-boy,Python,Django,Factory,Faker,Factory Boy,Factory\u boy使用fake Factory(Faker)生成随机值,我想在Django测试中直接使用Faker生成一些随机值 Factory\u boy docs建议使用Factory.Faker及其提供商: class RandomUserFactory(factory.Factory): class Meta: model = models.User first_name = factory.Faker('first_name') 但这不会生成
Factory\u boy
使用fake Factory(Faker)
生成随机值,我想在Django测试中直接使用Faker生成一些随机值
Factory\u boy docs建议使用Factory.Faker
及其提供商:
class RandomUserFactory(factory.Factory):
class Meta:
model = models.User
first_name = factory.Faker('first_name')
但这不会生成任何名称:
>>> import factory
>>> factory.Faker('name')
<factory.faker.Faker object at 0x7f1807bf5278>
>>> type(factory.Faker('name'))
<class 'factory.faker.Faker'>
有没有其他方法可以使用Faker
而不是直接从Faker
设置实例
from faker import Factory
fake = Factory.create()
fake.name()
您可以将faker与factory_boy一起使用,如下所示:
class RandomUserFactory(factory.Factory):
class Meta:
model = models.User
first_name = factory.Faker('first_name')
user = RandomUserFactory()
print user.first_name
# 'Emily'
所以你需要用factory_boy实例化一个用户,它会为你调用Faker
我不知道你是不是想用这个来对付Django,
但是如果希望工厂将创建的用户保存到数据库中,
然后您需要扩展factory.django.DjangoModelFactory而不是factory.factory。我知道这是一个老问题,但对于任何可能遇到此问题的人,这里有另一种方法可以使用
>>来自factory.faker导入faker
>>>FAKE=faker.faker()
>>>假的名字()
“斯科特·罗德里格斯”
>>>假地址
'PSC 5061,邮箱1673\nAPO AP 53007'
>>>
UPD您通常应该选择其中一种,因为这一种使用私有接口,generate()
解决方案仅适用于factory boy首先,如果您想将factory\u boy
与Django模型一起使用,您应该按原样使用DjangoModelFactory
其次,factory\u boy
还可以使用Faker
属性声明,以便轻松定义外观逼真的工厂。()
类RandomUserFactory(factory.DjangoModelFactory):
类元:
model='myapp.User'#相当于model=myapp.models.User
first\u name=factory.Faker('first\u name'))
定义工厂后,您只需按如下方式使用它:
o=RandomUserFactory()
>>>o.名字
提姆
这就是我问这个问题时想知道的。我想来自工厂。假货进口假货
也不例外。从再现性的角度来看,我认为最好使用工厂男孩自己创建的实例。不幸的是,这在以后的伪造版本中不再有效。@jaywink Good catch,更新了答案。
class RandomUserFactory(factory.Factory):
class Meta:
model = models.User
first_name = factory.Faker('first_name')
user = RandomUserFactory()
print user.first_name
# 'Emily'
import factory
print(factory.Faker('random_int').generate({}))
print(factory.Faker._get_faker().random_int())