首页 > 编程语言 > 详细

【Python】[技术博客] 如何对使用PYQT编写的GUI文件进行单元测试

时间:2019-05-22 21:27:12      阅读:261      评论:0      收藏:0      [点我收藏+]

如何对使用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)

【Python】[技术博客] 如何对使用PYQT编写的GUI文件进行单元测试

原文:https://www.cnblogs.com/bhlt1998/p/10908219.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!