2016-07-31 69 views
6

Factory_boy使用fake-factory (Faker)來生成隨機值,我想直接在我的Django測試中使用Faker生成一些隨機值。如何使用Faker from Factory_boy

Factory_boy文檔建議使用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'> 

factory_boyfaker.pyfactory.Faker('ean', length=10)電話faker.Faker.ean(length=10)Faker文檔說它應該顯示名稱:

from faker import Faker 
fake = Faker() 
fake.name() 
# 'Lucy Cechtelar' 

是否有其他方式使用Faker而不是直接從Faker設置實例?

from faker import Factory 
fake = Factory.create() 
fake.name() 

回答

8

您可以使用攤販與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用戶,它會調用法克爾你。

我不知道,如果你想使用Django與否, 使用,但如果你想在工廠保存創建的用戶數據庫, 那麼你需要延長的,而不是factory.django.DjangoModelFactory factory.Factory。