30

Factory_boyを使用fake-factory (Faker)してランダムな値を生成しますが、Faker を直接使用して Django テストでいくつかのランダムな値を生成したいと考えています。

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_boy faker.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()
4

4 に答える 4

27

次のように factory_boy で faker を使用できます。

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.Factory の代わりに factory.django.DjangoModelFactory を拡張する必要があります。

于 2016-08-02T12:15:47.087 に答える