_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
docsは名前を表示する必要があると言っています:
_from faker import Faker
fake = Faker()
fake.name()
# 'Lucy Cechtelar'
_
Faker
から直接インスタンスを設定する代わりにFaker
を使用する他の方法はありますか?
_from faker import Factory
fake = Factory.create()
fake.name()
_
私はこれが古い質問であることを知っていますが、これに遭遇する可能性のある人のために、あなたが使用できる別のアプローチがあります。
>>> from factory.faker import faker
>>> FAKE = faker.Faker()
>>> FAKE.name()
'Scott Rodriguez'
>>> FAKE.address()
'PSC 5061, Box 1673\nAPO AP 53007'
>>>
次のように、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.Djangoを拡張する必要があります。 factory.FactoryではなくDjangoModelFactory。