测试基于时间的脚本

时间:2011-01-27 13:20:48

标签: python unit-testing datetime

我正在编写一个简单的脚本,其中包含几行代码:

if (datetime.datetime.hour == 12):

测试这些的最简单方法是什么?每次我想测试它时将系统时间更改为不同的时间有点烦人,是否有更简单的方法让Python认为它是一个不同的时间?

1 个答案:

答案 0 :(得分:2)

创建一个日期时间对象now并使用它:

import datetime, pytz

testing = False # set to True/False

if testing:
    now = datetime.datetime(2011, 1, 1, 12, 23, 34, tzinfo=pytz.utc)
    # testing with any time
else:
    now = datetime.datetime.now(pytz.utc)
    # normal usage with current time

if (now.hour == 12):
    ...

编辑:您还可以使用可选参数启动脚本(选中optparse):如果它填写在YYYYMMDDHHMMSS表单中,您可以解析它:

if optDate: 
    now = datetime.datetime.strptime(optDate, '%Y%m%d%H%M%S').replace(tzinfo=pytz.utc)
else:
    now = datetime.datetime.now(pytz.utc)

如果需要,请在此处应用您自己的时区。