pytest支持PyQt和PySide应用程序
项目描述
pytest-qt 是一个pytest 插件,允许程序员为 PyQt5、PyQt6、PySide2 和 PySide6 应用程序编写测试。
主要用法是使用 qtbot 通用配置,负责按需创建 qApp 并提供模拟用户交互的方法,如按键和鼠标点击。
def test_hello(qtbot):
widget = HelloWidget()
qtbot.addWidget(widget)
# click in the Greet button and make sure it updates the appropriate label
qtbot.mouseClick(widget.button_greet, qt_api.QtCore.Qt.MouseButton.LeftButton)
assert widget.greet_label.text() == "Hello!"
这允许你在每次代码更改后测试并确保你的视图层表现符合预期。
特性
qtbot 通用配置用于模拟与 Qt 小部件的用户交互。
自动捕获 qDebug、qWarning 和 qCritical 消息的 自动捕获。
提供 waitSignal 和 waitSignals 函数,直到特定信号发出,才阻止测试执行。
虚拟方法和槽的异常 将自动捕获并相应地使测试失败。
要求
从版本 4.1.0 开始,pytest-qt 需要 Python 3.7+。
与 PySide6、PySide2、PyQt6 或 PyQt5 一起使用。
如果在执行测试时已导入上述任何库,则将使用该库。
如果没有,pytest-qt 将尝试按以下顺序导入和使用 Qt API
PySide6
PySide2
PyQt6
PyQt5
要强制使用特定 API,请将配置变量 qt_api 设置为 pytest.ini 文件中的 pyside6、pyside2、pyqt6 或 pyqt5
[pytest]
qt_api=pyqt5
或者,您可以将环境变量 PYTEST_QT_API 设置为上述相同的值(如果都设置,则环境变量胜过配置)。
文档
完整的文档和教程可在 Read the Docs 上找到。
变更日志
请查阅 变更日志页面。
错误/请求
请在 问题跟踪器 中报告任何问题或功能请求。
贡献
欢迎贡献,因此请随时提交错误或功能请求。
拉取请求被高度赞赏!如果您能,请包括一些测试新代码或测试错误的修复,并确保在贡献者名单中包含您自己。 :)
为了准备您的环境,创建一个虚拟环境,并使用 dev 附加功能以可编辑模式安装 pytest-qt
$ pip install --editable .[dev]
之后,安装 pre-commit 以进行预提交检查
$ pre-commit install
运行测试
测试使用 tox 运行。
$ tox -e py37-pyside2,py37-pyqt5
pytest-qt 使用 black 进行格式化,并在提交前使用 pre-commit 进行代码风格检查。您可以使用以下命令在本地安装 pre-commit
$ pip install pre-commit $ pre-commit install
贡献者
感谢以下人员
Igor T. Ghisi (@itghisi);
John David Reaver (@jdreaver);
Benjamin Hedrich (@bh);
Benjamin Audren (@baudren);
Fabio Zadrozny (@fabioz);
Datalyze Solutions (@datalyze-solutions);
Florian Bruhin (@The-Compiler);
Guilherme Quentel Melo (@gqmelo);
Francesco Montesano (@montefra);
Roman Yurchak (@rth)
Christian Karl (@karlch)
由以下提供支持
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。