在没有显示的情况下测试 wxPython 小部件
Testing wxPython widget without a display
我有这个测试用例:
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
是一个 class 继承自 wx.Panel
的东西。当我 运行 在我的 X11 显示器上的控制台上进行测试时,这工作得很好。没有显示 windows,但很明显事情发生了。
然而,当我通过 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")
当 运行ning tox 没有 DISPLAY
时,我可以跳过这些测试,但这意味着我的 CI 工具 (Jenkins) 将始终报告错误的测试覆盖率。
如何让这个测试在无头显示器上运行?
我认为你需要将 tox.ini
中的 $DISPLAY
env var 传递给 pytest:
[testenv]
passenv = DISPLAY
如果您已有一个,也可以添加到列表中。
我有这个测试用例:
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
是一个 class 继承自 wx.Panel
的东西。当我 运行 在我的 X11 显示器上的控制台上进行测试时,这工作得很好。没有显示 windows,但很明显事情发生了。
然而,当我通过 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")
当 运行ning tox 没有 DISPLAY
时,我可以跳过这些测试,但这意味着我的 CI 工具 (Jenkins) 将始终报告错误的测试覆盖率。
如何让这个测试在无头显示器上运行?
我认为你需要将 tox.ini
中的 $DISPLAY
env var 传递给 pytest:
[testenv]
passenv = DISPLAY
如果您已有一个,也可以添加到列表中。