单击python单元测试验证按钮



我不能让这个按钮点击验证工作,我的测试出了什么问题

模块最小值示例.py:

from PyQt5.QtWidgets import QPushButton, QDialog
from PyQt5.QtCore import pyqtSlot
class App(QDialog):
def __init__(self):
super().__init__()
self.button = QPushButton('PyQt5 button', self)
self.button.clicked.connect(self.on_click)
self.show()
@pyqtSlot()
def on_click(self):
print('button clicked')

模块test_minimalExample.py
from unittest import TestCase
from unittest.mock import patch as patch
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication
from PyQt5.QtTest import QTest
import minimalExample
class TestApp(TestCase):
def setUp(self):
self.ctx = QApplication([])
def test_on_click(self):
with patch.object(minimalExample.App, 'on_click') as mock:
app = minimalExample.App()
QTest.mouseClick(app.button, Qt.LeftButton)
self.assertTrue(mock.assert_called())

我可以在输出中看到我的按钮被点击了,但我也得到了:
断言错误:应该调用了"on_click"。

通过稍微调整test_on_click方法,它现在适用于我的minimal示例:

def test_on_click(self):
with mock.patch('minimalExample.App.on_click') as clickCheck:
app = minimalExample.App()
QTest.mouseClick(app.button, Qt.LeftButton)
self.assertTrue(clickCheck.called)

最新更新