2016-07-31 2 views
6

Factory_boy использует fake-factory (Faker) для генерации случайных значений, я хотел бы сгенерировать некоторые случайные значения в тестах Django напрямую с помощью Faker.Как использовать Faker из Factory_boy

Factory_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'> 

От factory_boyfaker.py класса factory.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 и он будет вызывать Faker для вас.

Я не знаю, если вы пытаетесь использовать это с Django или нет, , но если вы хотите, чтобы завод, чтобы сохранить созданный пользователем в базу данных, то вам необходимо расширить factory.django.DjangoModelFactory вместо factory.Factory.

Смежные вопросы