2016-07-31 8 views
6

Factory_boy은 임의의 값을 생성하기 위해 fake-factory (Faker)을 사용합니다. Fager를 직접 사용하여 장고 테스트에서 임의의 값을 생성하고 싶습니다.Factory_boy에서 Faker를 사용하는 방법

Factory_boy의 문서는 factory.Faker 등의 제공자 사용 제안 :

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

    first_name = factory.Faker('first_name') 

을하지만 이것은 어떤 이름이 생성되지 않습니다 factory.Faker('ean', length=10) 통화 faker.Faker.ean(length=10)하지만 Faker 문서가 정상적으로 말한다

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

faker.pyfactory_boy에서 클래스를 이름 표시 :

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을 가진 사용자의 인스턴스를 필요로하고 당신을 위해 위조자를 호출합니다.

장고 여부, 이것을 사용하려고하는 경우 나도 몰라하지만 당신은 데이터베이스에 생성 된 사용자를 저장하기 위해 공장을 원하는 경우, 은 다음 대신 factory.django.DjangoModelFactory을 확장 할 필요가 공장. 공장.