想要對PYQT編寫的GUI文件進行單元測試,咱們主要用到QTest
QTest裏面包含了一些對窗體的各類控件進行模擬操做的函數,經過QTest對窗體進行操做後,利用程序的一些返回值和狀態值進行斷言,來判斷各部分是否實現了預期的功能。python
與PYQT相關的模塊以下框架
from PyQt5.QtWidgets import QApplication from PyQt5.QtTest import QTest from PyQt5.QtCore import Qt
同時須要使用unittest模塊的單元測試框架函數
import unittest
另外須要導入待測試的窗口的py文件,例如單元測試
import mainwindow #本身的GUI
我以一個簡單的窗體爲例子,窗體以下
左右兩個按鈕的功能是翻頁,具體的實現就是切換中間顯示的圖片,程序中有一個值來記錄當前是第幾頁,咱們就用它來進行判斷。
首先在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
QTest包含了模擬鍵盤、鼠標的一系列操做的方法orm
具體參數能夠在python中查看help(QTest)blog