2013-01-15 37 views
1

我們有一堆調用Python C/C++綁定的測試。我們有鼻子運行這些測試:保護鼻子免受Python解釋器崩潰

nosetests myapp 
..... 
---------------------------------------------------------------------- 
Ran 5 tests in 0.009s 

有時,它發生,我們的綁定是越野車,引起了Python解釋器崩潰,比如,在測試數3:

test03_badcode (myapp.tests.test_badcode) ... Segmentation fault 

問:什麼是最好的方法來從這個恢復?理想情況下,我寧願鼻子處理這些崩潰本身 ,但我明白這是不可能實現 。我想到的下一個解決方案是注意測試和重新開始,現在跳過了不好的測試。在我的例子中,這將意味着執行測試1,2,4和5,但而不是測試3.有沒有辦法用鼻子編程實現這個?任何其他更好的想法?

回答

3

像往常一樣用鼻子,有一個插件。 Insulate將在單獨的過程中運行每個測試。這會減慢速度,但你可以保證在一次測試中發生崩潰不會影響其他測試。

+0

不錯,但不知何故,這個插件無法正確使用跳過的測試。我在主/從通訊中遇到'RuntimeError:協議錯誤'異常。你有一個簡單的解決辦法嗎? –

+0

查看模塊後,我們創建了[一個插件版本](https://github.com/idiap/bob/blob/master/python/bob/test/insulate.py),支持跳過的測試。這似乎在我們的構建中正常工作。 –