Python 类型错误:<;lambda>;()缺少1个必需的位置参数:
我试图使用factory_boy和faker用一些随机数据填充我的Django项目。但是,当我尝试创建UserFactory对象的实例时,我得到了错误TypeError:()缺少1个必需的位置参数:“a” 这似乎与伪日期和日期连接属性及其lambda函数有关。我发现有两个教程以这种方式为Factory对象使用lambda函数,但对我来说不起作用Python 类型错误:<;lambda>;()缺少1个必需的位置参数:,python,django,lambda,factory-boy,Python,Django,Lambda,Factory Boy,我试图使用factory_boy和faker用一些随机数据填充我的Django项目。但是,当我尝试创建UserFactory对象的实例时,我得到了错误TypeError:()缺少1个必需的位置参数:“a” 这似乎与伪日期和日期连接属性及其lambda函数有关。我发现有两个教程以这种方式为Factory对象使用lambda函数,但对我来说不起作用 import datetime import factory import faker from dataStoreApp.models import
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'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Program Files\Python36\lib\site packages\factory\base.py”,第568行,在create中
返回cls.\u生成(enums.CREATE\u策略,kwargs)
文件“C:\Program Files\Python36\lib\site packages\factory\base.py”,第505行,在生成
返回步骤build()
文件“C:\Program Files\Python36\lib\site packages\factory\builder.py”,第272行,内部版本
步骤.解决(预处理)
文件“C:\Program Files\Python36\lib\site packages\factory\builder.py”,第221行,解析
self.attributes[field\u name]=getattr(self.stub,field\u name)
文件“C:\Program Files\Python36\lib\site packages\factory\builder.py”,第363行,在\uuu getattr中__
extra=declaration.context,
文件“C:\Program Files\Python36\lib\site packages\factory\declarations.py”,第59行,在evaluate中
返回self.function()
TypeError:()缺少1个必需的位置参数:“a”
在代码中创建带有参数a
的函数
lambda a: ....
但程序似乎期望函数没有参数
lambda: ...
它与本示例教程中的代码有什么不同?我仍然不确定我错在哪里。已解决:LazyFunction应该是date_Joined中的LazyAttribute注意
工厂
方法。