pyqt和pyside应用程序的pytest支持
pytest-qt的Python项目详细描述
pytest qt是一个pytest插件,允许程序员编写测试 对于PySide、PySide2和PyQt应用程序。
主要用途是使用qtbotfixture,负责处理qApp 根据需要创建并提供模拟用户交互的方法, 就像按键和鼠标点击一样:
deftest_hello(qtbot):widget=HelloWidget()qtbot.addWidget(widget)# click in the Greet button and make sure it updates the appropriate labelqtbot.mouseClick(widget.button_greet,QtCore.Qt.LeftButton)assertwidget.greet_label.text()=="Hello!"
这允许您测试并确保您的视图层在每次代码更改后都按预期的方式运行。
功能
- qtbot用于模拟用户与Qtwidgets的交互的fixture。
- Automatic capture共qDebug、qWarning和qCritical封邮件;
- waitSignal和waitSignals函数阻止测试执行,直到指定 发出信号。
- Exceptions in virtual methods and slots被自动捕获并 相应的测试失败。
要求
使用PySide、PySide2或PyQt(PyQt5和PyQt4)选择 在系统上可用,优先于安装在 此订单:
- PySide2
- PyQt5
- PySide
- PyQt4
要强制特定的api,请将pytest.ini文件中的配置变量qt_api设置为 pyqt5,pyside,pyside2,pyqt4或pyqt4v2。pyqt4v2设置PyQt4 指向version 2的API。
[pytest]qt_api=pyqt5
或者,可以设置PYTEST_QT_API环境 变量的值与上面描述的值相同(环境变量胜过配置 如果两者都已设置)。
文档
完整的文档和教程可在Read the Docs找到。
更改日志
请咨询changelog page。
错误/请求
请在issue tracker中报告任何问题或功能请求。
贡献
欢迎投稿,因此请随时提交错误或功能 请求。
非常感谢拉取请求!如果你 可以,包括一些测试来运行新代码,或者测试一个bug 修正,并确保将自己包含在贡献者列表中。:)
运行测试
使用tox运行测试。建议在python 3上进行本地开发,因为 PyQt5和PySide2可以使用pip轻松安装:
$ tox -e py37-pyside2,py37-pyqt5
pytest-qt使用black格式化并使用 pre-commit用于提交之前的linting检查。你 可以使用以下命令在本地安装pre-commit:
$ pip install pre-commit $ pre-commit install
贡献者
非常感谢:
- 伊戈尔·吉西(@itghisi);
- 约翰·大卫·雷弗(@jdreaver);
- 本杰明·赫德里奇(@bh);
- 本杰明奥德伦(@baudren);
- 法比奥·扎德罗兹尼(@fabioz);
- 数据分析解决方案(@datalyze-solutions);
- 弗洛里安·布鲁欣(@The-Compiler);
- 吉勒梅·昆特尔·梅洛(@gqmelo);
- 弗朗西斯科·蒙特萨诺(@montefra);
- 罗马尤查克(@rth)
由