我正在构建一个小型Flask应用程序,每隔一段时间就会运行一次工作。我正在使用apschduler
。有没有办法为此设置测试?我正在使用py.test。
类似的东西:
def test_cron(self, app):
wait(months=1)
assert cron_has_run
有什么建议吗?
答案 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。它过去使用模拟和日期。