在pytest中人为地提前时间

advance time artificially in pytest

我的代码取决于经过的时间(例如:如果 10 分钟过去了)

在 pytest 中模拟这个的最佳方法是什么? 模块时间的猴子补丁方法?

示例代码(测试代码 - 有点示意图但传达了信息):

current_time = datetime.datetime.utcnow()
retry_time = current_time + datetime.timedelta(minutes=10)
#time_in_db represents time extracted from DB
if time_in_db > retry_time:
    #perform the retry

FreezeGun 可能是最简单的解决方案。

自述文件中的示例代码:

from freezegun import freeze_time

@freeze_time("2012-01-14")
def test():
    assert datetime.datetime.now() == datetime.datetime(2012, 01, 14)