繁体   English   中英

如何测试包含不同日期的 datetime.now() 的 python 方法?

[英]How to test python methods that include datetime.now() for different dates?

我有一些使用datetime库中的datetime.datetime.now()的方法。 我想为这些方法编写单元测试,就好像now()是几个不同的时间(例如,每月的第 5 天,每月的第 15 天)。

例如,假设我有这个方法(真的只是一个例子,我没有这样的方法)

import datetime

def days_left_this_month():
    return 30 - datetime.datetime.now().day

我想在该月的第 5 天测试该方法,即: days_left_this_month() == 25如果now()在该月的第 5 天。

做这个的最好方式是什么?

您可以使用freezegun

from freezegun import freeze_time
import datetime
import unittest


@freeze_time("2019-10-05")
def test():
    assert datetime.datetime.now() == datetime.datetime(2019, 10, 05)

例如测试days_left_this_month

def days_left_this_month():
    return 31 - datetime.datetime.now().day

我们可以:

@freeze_time("2019-10-05")
def test():
    assert days_left_this_month() == 26

def test_multiple():
    with freeze_time(x):
        assert days_left_this_month() == y
    with freeze_time(x):
        assert days_left_this_month() == y
    with freeze_time(x):
        assert days_left_this_month() == y
    with freeze_time(x):
        assert days_left_this_month() == y

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM