2017-07-14 144 views
0

測試的wxPython控件我有這樣的測試案例:沒有顯示

class MyNiftyPanelTest(unittest.TestCase): 
    def setUp(self): 
     self.app = wx.App() 
     self.frame = wx.Frame(None) 
     self.sut = SUT(self.frame, -1) 

    […] 

    def tearDown(self): 
     wx.CallAfter(self.frame.Close) 
     self.app.MainLoop() 

SUT是一類從wx.Panel這確實的東西繼承。當我在X11顯示器上的控制檯上運行測試時,這很好。沒有窗戶顯示,但很明顯的事情發生。

然而,當我通過TOX運行它(是否tox -r或使用xvfb-run tox -v -r),我收到以下錯誤:

SystemExit: Unable to access the X Display, is $DISPLAY set properly 

調用self.app = wx.App()時。

使用

@pytest.mark.skipif(os.getenv('DISPLAY', False) == False, 
        reason="does not run without a DISPLAY") 

運行TOX時沒有DISPLAY但是這意味着我的CI工具(詹金斯)將始終報告錯誤的測試覆蓋我可以跳過這些測試。

我怎樣才能讓這個測試在無頭顯示器上工作?

+1

你可以試試[pytest-xvfb](https://pypi.python.org/pypi/pytest-xvfb)。 – phd

+0

@phd嗯,我現在感到羞怯。謝謝! – Sardathrion

回答

1

我認爲你需要通過在tox.ini$DISPLAY的環境變量下到pytest:

[testenv] 
passenv = DISPLAY 

或者添加到列表中,如果你已經有一個。