2014-10-02 40 views
2

我正在使用Jenkins構建並監視我的應用程序的測試。Jenkins代碼覆蓋如何工作?

我有這樣的片的Python代碼:

def register_os_handler(): 
    def handler(signal, frm): 
     raise SystemExit() 
    signal(SIGHUP, handler) 

在我的測試,我創建子進程,並將其發送SIGHUP信號和它退出如預期的,這意味着它達到raise SystemExit()線。

當我將它提交給詹金斯時,所有測試都通過了,但它表示行raise SystemExit()未被覆蓋。

我很好奇,爲什麼這條線確實到達了,但Jenkins仍然抱怨?

  1. 詹金斯的報道如何運作?

  2. 如果一個進程(即使它是一個子進程)退出,它不能檢測到該行或將該行考慮在內?

  3. 如何解決這個問題?

回答

1

我相信詹金斯使用coverage.py。如果要計算覆蓋子,你需要一點黑客,在此所說明:

http://nedbatchelder.com/code/coverage/subprocess.html

+0

感謝您的鏈接。我是一個python/Jenkins新手。那麼我可以在Jenkins中配置我的項目嗎? – 2014-10-02 12:08:20

+1

我不太瞭解Jenkins,但我看到,您可以將任意shell代碼添加到Jenkins作業中。所以最簡單的想法是使用''echo''命令來創建sitecustomize.py模塊。 – zefciu 2014-10-02 12:24:24