问题标签 [pytest-qt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
412 浏览

python - 带有 pytest-qt 的 travis 失败,没有退出也没有创建 QmessageBox

上下文

Qt5我尝试为通过python3(因此使用)编写的图形用户界面(GUI)创建集成测试pyqt5。我使用pytest插件pytest-qt来测试 GUI。

我测试了很大程度上受此问题启发的 GUI ,因此该命令pytest -v -s运行良好。

由于我的存储库是 on Github,我Travis-CI用来执行我的集成测试。

错误

但是,当我继续前进Github并启动Travis测试时,有时会出现以下错误:

MWE

我使用我的 git 存储库中包含的以下文件在 MWE 中重现此错误:

用python编写的GUI GUI.py

pytest用于创建 unittest的文件GUI_test.py

控制 travis 作业的文件.travis.yml(可以根据文档p32 处理图形窗口):

以及包含所需库的文件requirement.txt

其他尝试

我尝试在调试模式下运行 travis 作业。因此,在通过ssh安装所有依赖项连接后,我尝试运行该命令pytest并得到相同的错误。

但是,如果我这样做了,herbstluftwm &那么pytest测试运行良好并且不会出现错误。因此,我假设herbstluftwm &正常的travis作业上的命令有问题,但我不知道如何解决。

欢迎任何提示或帮助!

0 投票
1 回答
392 浏览

python - 无法在 github 操作中创建(python)QApplication

我对我的(python)Qt gui 进行了一些单元测试,这些测试需要 QApplication 实例,但创建一个对我来说总是失败(即以核心转储和应用程序中止结束QApplication())。到目前为止我尝试过的是:

  • 创建方法:
    • 简单app = QApplication()的模块级别
    • app = QApplication(['--platform offscreen'])
    • 使用来自 pytest-qt 的夹具来管理 QApplication 对象的创建,即传递qtbot给我的测试
  • 我什至尝试过qt的两个python端口,即:
    • PyQt5
    • PySide2
  • 虚拟屏幕:
    • 我试过跑步xvfb
    • 我也试过herbstluftwm在 Xvfb 上使用窗口管理器
    • 我已经尝试按照 QApplication instance/qtbot fixturex11-utils libxkbcommon-x11-0中的建议进行安装,导致 travis-ci 中止和核心转储

我尝试使用https://github.com/nektos/act在本地调试此问题,但使用此方法的问题在我添加之前是不可重现的(即一切都按预期工作)herbstluftwm,即只有我能够做到实现的是,在本地它也开始失败。

我还能检查什么?您是否看到在 github 操作上成功创建了 QApplication?顺便提一句。如何让 Qt 的输出在 github 操作中可见?(我已经添加env: QT_DEBUG_PLUGINS: 1,但看不到任何错误)

0 投票
3 回答
822 浏览

python - 使用 QT 运行 pytest 时出现致命的 Python 错误

我是 pytest 新手,在尝试运行我的一个测试文件时遇到了麻烦。我得到以下输出:

它看起来令人窒息的那一行是对 character_info_window 模块中 CharacterInfowWindow 类(QtWidgets.QMainWindow 的子类)的 __init__() 函数中的“super”的调用。关于可能是什么问题的任何想法?

0 投票
1 回答
797 浏览

python - Python 3.8 pytest-qt ModuleNotFoundError:没有名为“PyQt4”的模块

我已经在安装了 python 3.6 的 Linux mint 19 上创建了我的项目。我pytest结合使用pytest-qt来测试我的应用程序,它是一个 PyQt5 程序。

然后,我已经更新到 Linux mint 20。但是那里安装了 python 3.8 而不是 3.6。我不知道它是否相关,但现在我不能再运行我的测试套件了,当我输入pytest终端时,它会给我以下输出:

最后它说ModuleNotFoundError: No module named 'PyQt4'但我什至不使用 PyQt4,而是使用 PyQt5。

我已经安装pytestpytest-qt。该程序本身可以正常工作。

谢谢。

0 投票
1 回答
666 浏览

python - 为什么在使用 pytest-qt 进行测试时出现致命的 Python 错误?

我使用 pytest-qt 的第一次测试立即失败,出现致命的 Python 错误。我将代码简化为这个(一个永远不会通过但不应该崩溃的测试):

执行此操作失败:

请注意,故障发生在qapp夹具中,但测试正在使用qtbot(使用qapp自身)。

我认识到 PyQt5、Qt 运行时和 Qt 编译的版本之间存在不匹配(在输出的第二行中)。我的 18.04 Ubuntu 系统将 Qt5.9 作为系统范围的 Qt(来自标准仿生 PPA),但开发组使用的是 5.12。5.12 运行时安装到特定位置,并且对于本次运行,LD_LIBRARY_PATH指向该位置。如果我不使用此设置,则在 pytest 甚至开始运行之前会发生不同的错误:

INTERNALERROR> ImportError: /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5: symbol _ZNK15QDateTimeParser5parseER7QStringRiRK9QDateTimeb version Qt_5_PRIVATE_API not defined in file libQt5Core.so.5 with link time reference

0 投票
1 回答
124 浏览

continuous-integration - 使用 PyQT 运行 CI 测试

我正在为我的团队建立一个 CI Bitbucket 管道。我们正在使用 pytest 和 pytest-qt 来测试我们的软件。测试在本地运行没有任何问题,但使用管道构建失败。这是管道yml:

文件 requirements.txt 包含几个模块,包括:

这是尝试构建时的输出:

我从中得到的是 Qt 没有正确远程安装,因此测试无法运行。

我的问题是:可以在 CI 中测试 GUI,如果可以,如何测试?

编辑:

我已经分解为只测试 PyQt 的导入,它归结为这个测试套件:

这导致了以下结果:

0 投票
1 回答
85 浏览

python - `pytest-qt`函数`mouseMove()`不工作

这个问题已被问到这里这里这里这里这里,并且在 Qt5 中显然仍然存在一个关于它的错误,请注意这里。到目前为止,我没有发现任何东西可以解决我的问题。

我正在尝试测试当我的鼠标悬停在工具栏按钮上时是否显示正确的状态栏消息。

设置

操作系统: Windows 10 Professional x64 位,Build 1909
Python: 3.8.10 x64 位
PyQt: 5.15.4
pytest-qt: 4.0.2
IDE: VSCode 1.59.0

项目目录

代码

gui/main.py

gui/view.py

gui/model.py

gui/controller.py

resources/icons/toolbar/__init__.py

test/conftest.py

test/unit_tests/test_view.py

问题:

状态栏消息永远不会更新,鼠标有时只会移动到工具栏按钮。我不知道如何让这个测试通过。

0 投票
1 回答
74 浏览

python - `pytestqt.mouseMove` 到菜单栏菜单小部件移​​动到错误的位置

我正在尝试将鼠标移动到File菜单栏上的“按钮”。在我的程序中,pytestqt.mouseMove将鼠标移动到错误的位置(当前正在单击窗口标题附近)。

鼠标位置错误

设置

操作系统: Windows 10 Professional x64 位,Build 1909
Python: 3.8.10 x64 位
PyQt: 5.15.4
pytest-qt: 4.0.2
IDE: VSCode 1.59.0

项目目录

代码

gui/main.py

gui/view.py

gui/model.py

gui/controller.py

resources/icons/toolbar/__init__.py

test/conftest.py

test/unit_tests/test_view.py

问题:

鼠标移动到错误的地方:

鼠标位置错误

我需要鼠标移动到File按钮,以便我可以单击它。我怎样才能做到这一点?

0 投票
1 回答
219 浏览

python - 如何使用 pytest-qt 鼠标单击在 QTableWidget 中选择一个项目?

我的主 GUI 中有一个表格。我想测试我使用右键单击项目时出现的菜单删除表中项目的能力。我正在使用 pytest-qt 进行测试。在单击小部件(例如按钮)时,使用 qtbot.mouseClick 似乎效果很好,但是当我尝试向它传递一个表格项时,它会给我一个类型错误(由于表格项不是小部件)。给我错误的代码行如下:

出现错误:

鉴于文档,这个错误对我来说很有意义。我的问题是,有没有办法可以做到这一点?

我认为它不应该与问题相关,但是通过右键单击表项调用的函数使用 QPoint 装饰器。我的代码对右键单击的反应如下:

编辑:我可以使用 eyllanesc 的建议在表格中选择一个项目,但是右键单击该项目不会显示自定义上下文菜单。这是我的问题的最小可重现示例,使用带有自定义上下文菜单的两列表。我需要能够在测试期间自动选择“删除项目”选项:

0 投票
1 回答
63 浏览

python - 为什么我会在 pytest-qt 中收到这个“包装的 C/C++ 对象...已被删除”错误?

请注意:这是在W10上。这可能很重要。

Python:3.9.4 pytest:6.2.5 pytest-qt:4.0.2

我已经使用 pytest-qt 大约一个星期来开始开发 PyQt5 应用程序。有一些莫名其妙的问题,但没有一个比这个莫名其妙。

我的应用程序代码:

上面的最后一行需要添加。因此,我使用 TDD 方法开始编写测试:

注意注释掉的行显示了我一直在尝试的那种事情。但是您可以看到,即使只是创建 type 的对象LogTableView,然后调用该方法,根本没有任何模拟,也会导致错误。

在运行这个:

我明白了:

有没有人知道这是关于什么的?

PS FWIW,出于绝望,我什至试过这个:

...同样的错误。