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

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

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

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()

編寫針對翻頁按鈕的測試ui

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同樣完成單元測試框架就能夠了。code

3.QTest的其餘操做

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

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

具體參數能夠在python中查看help(QTest)blog

相關文章
相關標籤/搜索