测试Python / Flask中的计划任务

时间:2017-03-23 18:47:32

标签: testing flask pytest apscheduler

我正在构建一个小型Flask应用程序,每隔一段时间就会运行一次工作。我正在使用apschduler。有没有办法为此设置测试?我正在使用py.test。

类似的东西:

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

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您不应该测试作业是否实际运行,因为它是由已经过测试的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。它过去使用模拟和日期。