【Python】[技術博客] 如何對使用PYQT編寫的GUI文件進行單元測試


如何對使用PYQT編寫的GUI文件進行單元測試

想要對PYQT編寫的GUI文件進行單元測試,我們主要用到QTest
QTest里面包含了一些對窗體的各種控件進行模擬操作的函數,通過QTest對窗體進行操作后,利用程序的一些返回值和狀態值進行斷言,來判斷各部分是否實現了預期的功能。

1.需要導入的模塊

與PYQT相關的模塊如下

from PyQt5.QtWidgets import QApplication
from PyQt5.QtTest import QTest
from PyQt5.QtCore import Qt

同時需要使用unittest模塊的單元測試框架

import unittest

另外需要導入待測試的窗口的py文件,例如

import mainwindow #自己的GUI

2.編寫具體的測試

我以一個簡單的窗體為例子,窗體如下
示例窗體
左右兩個按鈕的功能是翻頁,具體的實現就是切換中間顯示的圖片,程序中有一個值來記錄當前是第幾頁,我們就用它來進行判斷。
首先在setUp中實例化窗口

def setUp(self):
    """ Create GUI"""
    self.form = mainwindow.g_window()

編寫針對翻頁按鈕的測試

def test_pushButton_right(self):
    """Test button pushButton_right"""
    widget = self.form.pushButton_2 #將要點擊的按鈕
    QTest.mouseClick(widget, Qt.LeftButton) #點擊向右翻頁按鈕
    self.assertEqual(2, self.now_page) #判斷頁面是否為2

    QTest.mouseClick(widget, Qt.LeftButton) #點擊向右翻頁按鈕
    self.assertEqual(3, self.now_page) #判斷頁面是否為3

    QTest.mouseClick(widget, Qt.LeftButton) #點擊向右翻頁按鈕
    self.assertEqual(1, self.now_page) #判斷頁面是否為1 ,一共有3頁,第3頁的下一頁回到第1頁

def test_pushButton_left(self):
    """Test button pushButton_left"""
    widget = self.form.pushButton_1
    QTest.mouseClick(widget, Qt.LeftButton) #點擊向左翻頁按鈕
    self.assertEqual(3, self.now_page) #判斷頁面是否為3,第1頁向左翻頁到最后一頁

    QTest.mouseClick(widget, Qt.LeftButton) #點擊向左翻頁按鈕
    self.assertEqual(2, self.now_page) #判斷頁面是否為2

    QTest.mouseClick(widget, Qt.LeftButton) #點擊向左翻頁按鈕
    self.assertEqual(1, self.now_page) #判斷頁面是否為1

然后與編寫普通代碼的unittest一樣完成單元測試框架就可以了。

3.QTest的其他操作

QTest包含了模擬鍵盤、鼠標的一系列操作的方法

  • 鍵盤相關
  • keyClick(...) 鍵盤按一個鍵
  • keyClicks(...) 鍵盤按多個鍵
  • keyEvent(...) 鍵盤事件
  • keyPress(...) 鍵盤按下
  • keyRelease(...) 鍵盤釋放
    +鼠標相關
  • mouseClick(...) 鼠標單擊
  • mouseDClick(...) 鼠標雙擊
  • mouseMove(...) 鼠標移動
  • mousePress(...) 鼠標按下
  • mouseRelease(...) 鼠標釋放

具體參數可以在python中查看help(QTest)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM