2014-10-02 69 views
4

我的代碼很簡單:如何真正測試Python中的信號處理?

def start(): 
    signal(SIGINT, lambda signal, frame: raise SystemExit()) 
    startTCPServer() 

所以我註冊我的應用程序與SIGINT信號處理,然後我開始啓動TCP監聽。

這裏是我的問題:

  1. 我如何使用Python代碼發送SIGINT信號?

  2. 如何測試應用程序是否收到SIGINT信號,它會引發SystemExit異常?

  3. 如果我在我的測試中運行start(),它會阻塞,我該如何發送信號給它?

+0

你不會單元測試信號本身。你會嘲笑'信號'電話。測試實際信號是*功能測試*。 – 2014-10-02 09:55:10

+2

@MartijnPieters好的,那麼如何進行功能測試呢? – 2014-10-02 09:56:02

+1

或許用'subprocess.Popen()'作爲子進程運行你的腳本並且發送這個子進程的一個信號? – 2014-10-02 10:11:47

回答