2012-10-02 47 views
5

我想在Jenkins中運行PyQt4的Python包中的測試,並且測試創建了窗口。由於我在Jenkins中運行測試,因此我需要重定向圖形輸出,所以我使用xvfb-run。在大多數情況下,這個工作,但一小部分時間,測試會隨機失敗:用xvfb運行py.test

/usr/bin/xvfb-run: line 171: kill: (27375) - No such process 

如果我重新運行測試,它工作正常,大部分的時間(所以它只是一個 - 問題)。

有沒有人遇到過這個問題?您是否有任何解決方法的想法來提高測試的穩定性?

+3

我認爲這是在'XVFB-run'腳本所在行,它會檢測是否有其他正在運行的實例,因此如果'-a'開關被賦予,可以用不同的重試服務器號碼。嘗試使用'-a'開關(或'--auto-servernum')運行來查看是否有任何區別。 –

回答

1

如果你的xvfb-run的副本是same as mine,我可以證實我也看過這個。

就我而言,目標進程導致Xvfb崩潰。這意味着包裝器腳本本身在拆除不再運行Xvfb時在第171行失敗。要解決它,我將kill $XVFBPID包裝在set +e/set -e區塊中。如果指定--error-file=以便xvfb-run可以在目標進程正在運行時保存Xvfb的異步標準錯誤輸出,那麼它也會有所幫助,因此您可以修復基礎原因。

解決方法:

# Kill Xvfb now that the command has exited. 
# Ignore failure of kill since we want to be forgiving of Xvfb itself crashing 
set +e 
kill $XVFBPID 
set -e 
+0

這可悲的是沒有爲我工作。不過謝謝。 – Sam

1

它工作,通過找到的Xvfb進程,殺死它。

ps auwx | grep "Xvfb" | grep -v grep