第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何凍結(jié) datetime.now 以進(jìn)行單元測(cè)試

如何凍結(jié) datetime.now 以進(jìn)行單元測(cè)試

ITMISS 2023-03-01 16:54:19
我有一個(gè)使用函數(shù)返回默認(rèn)日期時(shí)間的模型:class Company(models.Model):    q1_results_date = models.DateField(        verbose_name='Q1 financial results',        default=quarter_results_date(1),        blank=False,        null=False,    )def quarter_results_date(month):    return datetime.datetime(        datetime.datetime.now().year,        month,        calendar.monthrange(datetime.datetime.now().year, month)[1]    )我想對(duì)此進(jìn)行單元測(cè)試,這需要我將 datetime.now() 設(shè)置為已知值。為此,我正在使用freezegun.freeze_time:def test_quarter_results_date(self):    with freeze_time("2012-01-14"):        print('check datetime.now()', datetime.now())        c = Company.objects.create()    ...但是,盡管print語句顯示2012-01-14,但日期時(shí)間并未凍結(jié),因?yàn)樗谟?jì)算時(shí)仍使用今天的日期c1.q1_results_date。我該如何糾正這個(gè)問題?
查看完整描述

1 回答

?
胡子哥哥

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊

這不起作用的原因是因?yàn)槟{(diào)用了該函數(shù)。因此,這意味著datetime在解釋類時(shí)對(duì) 進(jìn)行求值,所以這基本上是在您啟動(dòng)服務(wù)器時(shí)進(jìn)行的。在那一刻,冷凍槍還沒有激活。


因此,這也意味著如果您稍后運(yùn)行服務(wù)器一段時(shí)間,并且年份增加,它仍將使用舊值。


您可以將可調(diào)用對(duì)象傳遞給默認(rèn)值,從而使用輔助函數(shù),例如:


def quarter_results_date(month):

    yr = datetime.datetime.now().year

    __, dy = calendar.monthrange(yr, month)

    return datetime.datetime(

        yr,

        month,

        dy

    )


def quarter_results_date_first():

    return quarter_results_date(1)


class Company(models.Model):

    q1_results_date = models.DateField(

        verbose_name='Q1 financial results',

        default=quarter_results_date_first,

        blank=False,

        null=False,

    )

請(qǐng)注意, 沒有使用括號(hào)default=quarter_results_date_first,因此我們將引用傳遞給函數(shù),而不是日期時(shí)間值。


查看完整回答
反對(duì) 回復(fù) 2023-03-01
  • 1 回答
  • 0 關(guān)注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)