Vous ne devriez pas avoir besoin de tester que le travail s'exécute réellement, car il est géré par apscheduler, qui a déjà été testé. Au lieu de cela, testez la tâche elle-même et testez que vous l'avez planifié comme prévu.
Vous pouvez inspecter les travaux planifiés à l'aide de get_jobs
. Si vous voulez tester que vous avez planifié un travail correctement, planifiez-le puis trouvez son travail dans la liste. Vous pouvez tester si next_run_time
est un mois, par exemple.
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)
Si vous êtes intéressé à comment les tests apscheduler son planificateur, vous pouvez regarder le code: https://github.com/agronholm/apscheduler/blob/master/tests/test_schedulers.py. Il utilise des simulacres et des dates dans le passé.
Testez la tâche, pas apscheduler. apscheduler est déjà testé, vous pouvez compter sur lui pour programmer les choses. – davidism
mais je veux tester que j'ai configuré la tâche correctement avec apscheduler. Mes critères sont en fait plus complexes que simplement courir tous les mois, n'y a-t-il aucun moyen de tester cela? – cyniphile