簡體   English   中英

使用 Factory Boy SelfAttribute + relativedelta

[英]Using Factory Boy SelfAttribute + relativedelta

我在測試中使用 Factory Boy 並希望實現以下目標:

  • 使first_period_end_date依賴於first_period_date並添加 12 個月。

我正在嘗試將SelfAttributerelativedelta結合使用,但我目前應用它的方式不起作用。 我的代碼:

import datetime

import factory
from dateutil import relativedelta

from somewhere.models import Contract

class ContractFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = Contract

    start_date = factory.LazyFunction(datetime.date.today)
    first_period_date = factory.SelfAttribute('start_date')
    first_period_end_date = (
        factory.SelfAttribute('first_period_date')
        + relativedelta.relativedelta(months=12)
    )

但是在運行時我收到以下錯誤:

TypeError: unsupported operand type(s) for +: 'SelfAttribute' and 'relativedelta'

所以這顯然不是它的完成方式。 但是我該怎么做呢?

答案是LazyAttribute SelfAttribute僅對復制字段有幫助。

你應該做:

class ContractFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = Contract

    start_date = factory.LazyFunction(datetime.date.today)
    first_period_date = factory.SelfAttribute('start_date')
    first_period_end_date = factory.LazyAttribute(
        lambda self: self.first_period_date + relativedelta.relativedelta(months=12)
    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM