在没有显示屏的设备上运行 tkinter 测试

问题描述 投票:0回答:1

我有一些 Python 代码,我为其创建了一些 tkinter GUI。我使用 pytest 框架为构成这些 GUI 的一些自定义框架编写了一些基本测试,并且它们在本地工作。但是,我将此项目托管在 GitLab 存储库上,该存储库使用运行器自动运行这些测试,并且运行器没有显示,导致测试失败。具体来说,它们在创建框架的母版时失败,该母版必须是 Tk 对象。初始化 Tk 对象时,tkinter 源代码中的以下行由于 Tcl 错误而失败:

self.tk = _tkinter.create(...)

我不需要实际显示小部件,我只是想测试在初始化它们和使用它们的方法时没有任何中断。我尝试模拟 Frame 类(与之前相同的错误)和 Tk 类(

Mock object has no attribute 'tk'
),但没有成功。我想知道是否有办法让这些测试在运行器上运行,或者我是否应该在没有显示时跳过测试。预先感谢您!

python tkinter testing gitlab-ci-runner
1个回答
0
投票

您必须有某种显示器才能运行基于 tk 的应用程序,这是无法回避的。如果您使用基于 X11 的系统(例如:linux),您可以通过在虚拟帧缓冲区(例如:xvfb)或运行 X11 的 docker 容器内运行应用程序来完成此操作。

© www.soinside.com 2019 - 2024. All rights reserved.