2016-07-31 49 views
6

Factory_boy tarafından rastgele değerler oluşturmak için fake-factory (Faker) kullanır, doğrudan Faker kullanarak Django testlerimde bazı rasgele değerler oluşturmak istiyorum.Faker, Factory_boy

Factory_boy docs factory.Faker ve olarak sağlayıcısını kullanarak önerir:

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

    first_name = factory.Faker('first_name') 

Ama bu herhangi bir ad oluşturmayan: factory.Faker('ean', length=10) aramalar faker.Faker.ean(length=10) ama Faker dokümanlar olması gerektiği diyor

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

faker.pyfactory_boy itibaren sınıf bir ad göster:

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

Faker doğrudan bir örnek ayarlamak yerine Faker kullanmak için başka bir yolu var mı?

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

cevap

8

Böyle factory_boy ile faker kullanabilirsiniz:

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

    first_name = factory.Faker('first_name') 

user = RandomUserFactory() 

print user.first_name 
# 'Emily 

Yani factory_boy sahip bir kullanıcı örneğini gerekir ve sizin için sahtekar arayacak.

Eğer Django ya da olmasın, ile bu kullanmaya çalışıyorsanız bilmiyorum ama veritabanına oluşturulan kullanıcıyı kaydetmek fabrika istiyorsanız, o zaman yerine factory.django.DjangoModelFactory uzatmak gerekir factory.Factory.