【问题标题】:python unittest verify button clickedpython unittest验证按钮单击
【发布时间】:2021-05-10 09:04:47
【问题描述】:

我无法使这个按钮点击验证工作,我的测试有什么问题?

模块 minimumExample.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())

我可以在输出中看到我的按钮被点击,但我也得到:
AssertionError:应调用“on_click”。

【问题讨论】:

    标签: python unit-testing button mocking pyqt5


    【解决方案1】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-09
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      相关资源
      最近更新 更多