想要对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