【问题标题】:Testing wxPython widget without a display在没有显示的情况下测试 wxPython 小部件
【发布时间】: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


【解决方案1】:

我认为您需要将tox.ini 中的$DISPLAY env var 传递给pytest:

[testenv]
passenv = DISPLAY

如果您已经有,也可以添加到列表中。

【讨论】:

    猜你喜欢
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    相关资源
    最近更新 更多