2017-07-14 149 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 

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