factory_boyとfakerを使用してDjangoプロジェクトにランダムなデータを設定しようとしています。しかし、UserFactoryオブジェクトのインスタンスを作成しようとすると、TypeError:()エラーが発生しました。1つの必須の位置引数 'a'がありません。TypeError:<lambda>()が見つかりません1必要な位置引数:
これはfake_date属性とdate_joined属性とそのラムダ関数と関係があるようです。私が見つけたチュートリアルのいくつかは、Factoryオブジェクトのためにこの方法でラムダ関数を使用してレイアウトしましたが、それは私のためには機能しません。
import datetime
import factory
import faker
from dataStoreApp.models import Category, Goal, Transaction
from django.contrib.auth.models import User
fake = faker.Faker()
class CategoryFactory(factory.django.DjangoModelFactory):
class Meta:
model = Category
name = factory.Iterator(['Category1', 'Category2',
'Category3', 'Category4',
'Category5', ], cycle=False)
class UserFactory(factory.django.DjangoModelFactory):
FACTORY_HIDDEN_ARGS = ('fake_date',)
class Meta:
model = User
fake_date = factory.LazyAttribute(
lambda a: datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))
date_joined = factory.LazyFunction(lambda a: a.fake_date)
first_name = factory.LazyAttribute(lambda b: fake.first_name())
last_name = factory.LazyAttribute(lambda c: fake.last_name())
email = factory.LazyAttribute(lambda e: 'test' + '@test_email.com')
class GoalFactory(factory.DjangoModelFactory):
class Meta:
model = Goal
class TransactionFactory(factory.django.DjangoModelFactory):
class Meta:
model = Transaction
のPythonコンソールで実行しているとき、私は次のエラーを取得:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Program Files\Python36\lib\site-packages\factory\base.py", line 568, in create
return cls._generate(enums.CREATE_STRATEGY, kwargs)
File "C:\Program Files\Python36\lib\site-packages\factory\base.py", line 505, in _generate
return step.build()
File "C:\Program Files\Python36\lib\site-packages\factory\builder.py", line 272, in build
step.resolve(pre)
File "C:\Program Files\Python36\lib\site-packages\factory\builder.py", line 221, in resolve
self.attributes[field_name] = getattr(self.stub, field_name)
File "C:\Program Files\Python36\lib\site-packages\factory\builder.py", line 363, in __getattr__
extra=declaration.context,
File "C:\Program Files\Python36\lib\site-packages\factory\declarations.py", line 59, in evaluate
return self.function()
TypeError: <lambda>() missing 1 required positional argument: 'a'
'FACTORY_'メソッドは[2.5で削除されました](http://factoryboy.readthedocs.io/en/latest/changelog.html#upgrading)。 – Alasdair