2011-01-27 45 views
1

我正在写有几行这样一个简单的脚本:测试基于时间的脚本

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

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

回答

2

创建一个DateTime对象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) 

如果你想在这里应用你自己的时区。

+0

辉煌!还有一件事:当我运行它时,我怎么会让剧本问我什么时候我想要它? (只有当测试=真正的obv。) – HankSmackHood 2011-01-27 13:35:49