10.信號處理

新增于3.2。

unittest的-c/--catch命令行選項(xiàng)以及unittest.main()catchbreak參數(shù)在測試運(yùn)行期間提供了更友好的control-C處理。啟用catch中斷行為后,control-C將允許當(dāng)前正在運(yùn)行的測試完成,然后測試運(yùn)行將結(jié)束并報(bào)告所有結(jié)果。第二個(gè)control-c將以通常的方式引發(fā)KeyboardInterrupt。

control-c處理信號處理程序試圖與安裝的signal.SIGINT處理程序的代碼或測試保持兼容。如果調(diào)用unittest處理程序但不是已安裝的signal.SIGINT處理程序,換句話說它已被被測系統(tǒng)替換并委托給它,則它調(diào)用默認(rèn)處理程序。這通常是代碼替換已安裝的處理程序并委托給它的預(yù)期行為。對于需要禁用unittest的control-c處理的單個(gè)測試,可以使用removeHandler()裝飾器。

框架作者有一些實(shí)用程序函數(shù)可以在測試框架中啟用control-c處理功能。


unittest.installHandler()
安裝control-c處理程序。當(dāng)收到signal.SIGINT時(shí)(通常是響應(yīng)用戶按下control-c),所有注冊的結(jié)果都會調(diào)用stop()。


unittest.registerResult(result)
為control-c處理注冊一個(gè)TestResult對象。注冊結(jié)果會存儲對它的弱作用,因此不會阻止結(jié)果被垃圾回收。
如果未啟用control-c處理,則注冊TestResult對象沒有副作用,因此測試框架可以無條件地注冊它們創(chuàng)建的所有結(jié)果,而與是否啟用處理無關(guān)。


unittest.removeResult(result)
刪除注冊結(jié)果。刪除結(jié)果后,將不再在該結(jié)果對象上調(diào)用stop()來響應(yīng)control-c。


unittest.removeHandler(function=None)
當(dāng)不帶參數(shù)調(diào)用時(shí),如果已安裝control-c處理程序,則此函數(shù)將刪除它。此函數(shù)還可以用作測試裝飾器,以便在執(zhí)行測試時(shí)刪除處理程序:

@unittest.removeHandler
def test_signal_handling(self):
  ...
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評論 19 139
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,707評論 0 5
  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,319評論 0 5
  • Annimal Math竟然玩到了一年級,第三關(guān)遇見了奇偶數(shù),花了好幾天琢磨加試驗(yàn),發(fā)現(xiàn)這仍然是可理解的,并且,可...
    銜草閱讀 1,227評論 0 6
  • 今天聊聊,如何管理孩子的“求勝心”? 最近我和恩仔重拾皇室戰(zhàn)爭(Clash Royale)這個(gè)游戲,這是一個(gè)排列組...
    茉莉大大閱讀 133評論 0 0

友情鏈接更多精彩內(nèi)容