2017-03-23 54 views
0

我正在构建一个小型Flask应用程序,每隔一个月运行一次,每隔一段时间运行一次。我为此使用了apschduler。有没有办法为此设置测试?我正在使用py.test。使用Python/Flask测试计划任务

喜欢的东西:

def test_cron(self, app): 
    wait(months=1) 
    assert cron_has_run 

有什么建议?

+1

测试任务,而不是apscheduler。 apscheduler已经过测试,您可以依靠它来实际安排事情。 – davidism

+0

但我想测试一下,我使用apscheduler正确设置了任务。我的标准实际上比每月简单运行更复杂,是否没有办法测试? – cyniphile

回答

0

您不应该需要测试该作业实际运行,因为该工作由apscheduler处理,该工作已经过测试。相反,测试任务本身并测试您是否按预期安排。

您可以使用get_jobs检查计划的作业。如果你想测试你是否正确安排了一项工作,安排它,然后在列表中找到它的工作。例如,您可以测试next_run_time是否为一个月。

for job in get_jobs(): 
    if name != 'name of job you care about': 
     continue 

    assert job.next_run_time >= datetime.utcnow() + timedelta(days=30) 
    assert job.next_run_time <= datetime.utcnow() + timedelta(days=32) 

如果你有兴趣在如何apscheduler测试它的调度程序,你可以看一下代码:https://github.com/agronholm/apscheduler/blob/master/tests/test_schedulers.py。它在过去使用模拟和日期。