我听说单元测试是保持代码正常工作的好方法。
单元测试通常将简单的输入放入函数中,并检查其简单的输出。但如何测试 UI?
我的程序是用PyQt编写的。我应该选择 PyUnit 还是 Qt 内置的 QTest?
作为另一种选择,如果您更喜欢与 pytest-qt
一起工作,还有
pytest
:
https://pytest-qt.readthedocs.io/en/latest/intro.html
它可以让您测试
pyqt
和 pyside
应用程序并允许模拟用户交互。这是其文档中的一个小示例:
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, QtCore.Qt.LeftButton)
assert widget.greet_label.text() == "Hello!"
有一个使用 pytest-qt 的完美教程:
https://www.youtube.com/watch?v=WjctCBjHvmA&ab_channel=AdamBemski https://github.com/adambemski/blog/tree/master/006_pytest_qt_GUI_testing
其实很简单,教程中有一段代码:
import pytest
from PyQt5 import QtCore
import example_app
@pytest.fixture
def app(qtbot):
test_hello_app = example_app.MyApp()
qtbot.addWidget(test_hello_app)
return test_hello_app
def test_label(app):
assert app.text_label.text() == "Hello World!"
def test_label_after_click(app, qtbot):
qtbot.mouseClick(app.button, QtCore.Qt.LeftButton)
assert app.text_label.text() == "Changed!"