2017-03-23 88 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。它在過去使用模擬和日期。