2016-07-31 35 views
6

Factory_boyfake-factory (Faker) verwendet Zufallswerte zu erzeugen, würde Ich mag einige zufällige Werte in meinem Django erzeugen Tests mit Faker direkt.Wie Faker verwenden, um von Factory_boy

Factory_boy docs schlägt factory.Faker und dessen Provider als:

class RandomUserFactory(factory.Factory): 
    class Meta: 
     model = models.User 

    first_name = factory.Faker('first_name') 

Aber das erzeugt keinen Namen:

>>> import factory 
>>> factory.Faker('name') 
<factory.faker.Faker object at 0x7f1807bf5278> 
>>> type(factory.Faker('name')) 
<class 'factory.faker.Faker'> 

Von factory_boyfaker.py Klasse factory.Faker('ean', length=10) Anrufe faker.Faker.ean(length=10) aber Faker docs sagt, es sollte einen Namen anzeigen:

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

Gibt es eine andere Möglichkeit, Faker anstelle einer Instanz direkt von Faker zu verwenden?

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

Antwort

8

Sie können faker mit factory_boy wie folgt verwenden:

class RandomUserFactory(factory.Factory): 
    class Meta: 
     model = models.User 

    first_name = factory.Faker('first_name') 

user = RandomUserFactory() 

print user.first_name 
# 'Emily 

So benötigen Sie einen Benutzer mit factory_boy instanziiert und es wird für Sie Faker nennen.

Ich weiß nicht, ob Sie dies versuchen, mit Django zu verwenden oder nicht, aber wenn man das Werk wollen die erstellten Benutzer in der Datenbank zu speichern, dann müssen Sie factory.django.DjangoModelFactory verlängern statt Fabrik.Fabrik.