【发布时间】:2017-07-14 15:00:32
【问题描述】:
我有这个测试用例:
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")
在没有DISPLAY 的情况下运行 tox 时,我可以跳过这些测试,但这意味着我的 CI 工具 (Jenkins) 总是会报告错误的测试覆盖率。
我怎样才能让这个测试在无头显示器上工作?
【问题讨论】:
-
你可以试试pytest-xvfb。
-
@phd 好吧,我现在觉得很害羞。谢谢!
标签: python-3.x wxpython pytest test-coverage