我在寫一個可以異步觸發某些事件的應用程序。測試看起來像這樣:設置所有內容,休眠一段時間,檢查事件是否已觸發。嘲笑「睡眠」
但是由於等待測試需要相當長的時間才能運行 - 我在等待大約10秒的每次測試。我覺得我的測試很慢 - 還有其他地方我可以加快速度,但這種睡眠似乎是加速它的最明顯的地方。
什麼是消除睡眠的正確方法?有什麼辦法來欺騙日期時間或類似的東西?
該應用程序是一個基於龍捲風的web應用程序,異步事件由IOLoop觸發,所以我沒有辦法直接觸發它自己。
編輯:更多詳情。
該測試是一種集成測試,我願意嘲笑第三方代碼,但不想直接觸發自己的代碼。
該測試旨在驗證某個消息是否使用websocket發送,並在瀏覽器中正確處理。消息在客戶端連接到websocket處理程序時開始的特定超時後發送。超時值取當前連接時的datetime.now()
與數據庫中的值之差。在使用硒請求頁面之前,該值被人爲設置爲datetime.now() - 5 seconds
。由於加載頁面需要一些時間,並且可能在不同的機器上有點隨意,我不認爲減少5秒的時間間隔是明智的。超時後加載頁面將產生不同的結果(不應發送websocket消息)。
所以問題是強制龍捲風的IOLoop在websocket連接後的任何時候發送消息 - 如果在設置數據庫值後0.5秒內發生這種情況,還剩4.5秒等待,我想嘗試並消除那個延遲。
兩個顯而易見的地方是IOLoop本身和datetime.now()。現在的問題是,我應該哪一個猴子補丁和如何。
問題是我使用的框架執行所有的調度,我真的不知道它是如何完成的。儘管我可以用理論上替代它。 – aragaer