我正在編寫一個程序,該程序在生產中使用了多個相同代碼的實例。實例然後通過網絡進行通信,但在這裏無關緊要。Python:如何測試使用fork的程序?
在開發過程中,我多次分離初始過程以獲得完整的實例設置,這非常方便。
但是,試圖在這方面編寫集成測試會給我帶來問題:測試框架(unittest/nosetests/py.test)當然也是分叉的,所以我最終得到多個副本測試框架,提供了亂碼結果每個孩子的單元測驗的輸出重疊。
簡化示例:
- 程序是聊天客戶端,經由某種網絡連接到另一客戶端(比如,redis的發佈訂閱)
- 程序暴露的API張貼和讀取消息
- 我想以分離兩個彼此連接的程序實例
- 測試應使用API確保客戶端通過互相發送/接收消息來工作
- 主進程監督子進程的錯誤並運行測試套件
爲了達到這個目的,我需要「卸載」或停止子進程的測試框架。我怎樣才能做到這一點?
我可以通過調用測試套件來解決這個問題,但是我需要爲每個測試重新啓動所有的孩子。
你可以擴展對亂碼的結果,也給你試圖測試和預期結果的代碼粗略的想法。 – Dan
完成 - 希望更容易理解。 – arnuschky
我認爲你的問題是輸出,因爲stdout不是線程安全的。您可以嘗試爲每個進程重定向stdout,或者重構代碼以注入輸出車輛。 – Dan