Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Factory Boy SelfAttribute+relativedelta_Python_Django_Unit Testing_Factory Boy - Fatal编程技术网

Python 使用Factory Boy SelfAttribute+relativedelta

Python 使用Factory Boy SelfAttribute+relativedelta,python,django,unit-testing,factory-boy,Python,Django,Unit Testing,Factory Boy,我在测试中使用Factory Boy,希望实现以下目标: 使第一个周期结束日期依赖于第一个周期日期,并在其上添加12个月。 我试图将SelfAttribute与relativedelta结合使用,但我目前应用它的方式不起作用。我的代码: 导入日期时间 进口工厂 从dateutil导入relativedelta 进口合同 类ContractFactoryfactory.django.DjangoModelFactory: 类元: 模型=合同 开始日期=factory.LazyFunctiondat

我在测试中使用Factory Boy,希望实现以下目标:

使第一个周期结束日期依赖于第一个周期日期,并在其上添加12个月。 我试图将SelfAttribute与relativedelta结合使用,但我目前应用它的方式不起作用。我的代码:

导入日期时间 进口工厂 从dateutil导入relativedelta 进口合同 类ContractFactoryfactory.django.DjangoModelFactory: 类元: 模型=合同 开始日期=factory.LazyFunctiondatetime.date.today 第一个周期日期=工厂。SelfAttribute“开始日期” 第一个\u期间\u结束\u日期= factory.SelfAttribute'first\u period\u date' +relativedelta.relativedeltamonths=12 但在运行时,我得到以下错误:

TypeError: unsupported operand type(s) for +: 'SelfAttribute' and 'relativedelta'
所以这显然不是怎么做到的。但是我该怎么做呢?

答案是懒惰;SelfAttribute仅对复制字段有用

你应该做:

类ContractFactoryfactory.django.DjangoModelFactory: 类元: 模型=合同 开始日期=factory.LazyFunctiondatetime.date.today 第一个周期日期=工厂。SelfAttribute“开始日期” 第一个\u期间\u结束\u日期=factory.LazyAttribute lambda self:self.first\u period\u date+relativedelta.relativedeltamonths=12