提高测试人员测试效率之GUI工具

2023-05-16

如何有效的去提高测试效率,在一个团队当中,肯定会存在部分人员无法熟悉数据库操作的情况,这个时候我们就可以通过GUI编程将工具界面会,使之快速的上手
本次通过一个GUI工具来带领大家如何制作这么个工具
功能实现页面如下图
在这里插入图片描述

以下部分代码未保密,隐藏数据库连接及URL
```python
import sys
import pymysql
import requests
from PyQt5.QtCore import QObject, pyqtSignal, QBasicTimer, Qt
from PyQt5.QtGui import QTextCursor, QFont, QIcon
from gongju import Ui_Form
from PyQt5 import QtWidgets, QtGui
from PyQt5.QtWidgets import *

class Signal(QObject):

    text_update = pyqtSignal(str)

    def write(self, text):
        self.text_update.emit(str(text))
        QApplication.processEvents()

class MyClass(QWidget, Ui_Form):
    def __init__(self):
        super().__init__()
        self.InitUi()

    def InitUi(self):
        self.setupUi(self)
        self.setWindowTitle("测试工具")
        window_pale = QtGui.QPalette()
        window_pale.setBrush(self.backgroundRole(), QtGui.QBrush(QtGui.QPixmap("D:\Guitest\\background.png")))
        self.setPalette(window_pale)
        self.show()
        self.pushButton_2.clicked.connect(self.chognzhi)
        self.pushButton.clicked.connect(self.deleteuser)
        self.pushButton_3.clicked.connect(self.FindUser)
        self.pushButton_8.clicked.connect(self.denglu)
        self.pushButton_9.clicked.connect(self.shangban)
        self.pushButton_10.clicked.connect(self.xiaban)
        self.pushButton_7.clicked.connect(self.jiandan)
        self.pushButton_11.clicked.connect(self.yijiaofei)
        self.pushButton_12.clicked.connect(self.wijiaofei)
        self.txt = QtWidgets.QTextEdit()
        # 实时显示输出, 将控制台的输出重定向到界面中
        sys.stdout = Signal()
        sys.stdout.text_update.connect(self.updatetext)

    def updatetext(self, text):
        """
            更新测试结果到textBrowser
        """
        cursor = self.textBrowser.textCursor()
        cursor.movePosition(QTextCursor.End)
        self.textBrowser.append(text)
        self.textBrowser.setTextCursor(cursor)
        self.textBrowser.ensureCursorVisible()

    def chognzhi(self):

        reply = QMessageBox.information(self, "确认", "确认重置?",QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
        if reply == QMessageBox.No:
            print('退出')
            pass
        else:

            if self.comboBox.currentText()=="微信":
                clientType=0
            else:
                clientType=1

            phone=self.lineEdit_2.text()
            url = "https:/sysuser/reset/region"
            payload = {"phone":phone,"clientType":clientType}
            headers = {

                  'authdst': '683603105505349632',
                  'Authorization': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJvTEdJRndwblhtYXEzZDdYOFFhUEhuQTZQSk93O293SWVWNU5nU1dzWEFBTXdseTVaZUxOSTNQekkiLCJjcmVhdGVkIjoxNjY5NTk4NTcyNjUzLCJleHAiOjE2Njk4NTc3NzJ9.Y7YPMl_rZeKOXajAREC7SWgMh9xH3YV0kPmPJcJEabInl3o-denV-mQwpYrbsgaZR2b59n_X8XjX9rmz7duHzQ',
                  'from': '0',
                  'linkid': '0',
                  'userid': '683603105505349632'
            }
            try:
                response = requests.post(url, headers=headers, json=payload)
                print('归属地重置进行中...')
                if response.json()["res"]["codeMsg"]== None:
                    print('归属地重置成功!')
                elif response.json()["res"]["codeMsg"].strip()== "用戶不存在":#去掉字符串中其他符号
                    print('用户不存在!')
                else:
                    print('请求异常!')

            except Exception as e:
                print(e)

    def deleteuser(self):  # 连接mysql数据库

        userphone=self.lineEdit.text()
        connection = pymysql.connect(host="888.9--.100.194", port=23306, user='root', password="ZKtest@2020",
                                     db="web_db")
        print('数据库连接成功!')
        reply = QMessageBox.information(self, "确认", "确认删除?", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
        if reply == QMessageBox.No:
            print('退出')
            pass
        else:
            print("删除数据进行中...")
            cursor = connection.cursor()  # 获取游标
            sql1 = f'DELETE FROM t_user_wechat WHERE  phone="{userphone}"'
            sql2 = f'DELETE FROM t_user_player WHERE  phone="{userphone}"'
            sql3 = f'DELETE FROM t_user_alipay WHERE  phone="{userphone}"'
            sql4 = f'DELETE FROM t_user_platform_union WHERE  phone="{userphone}"'
            sql5= f'SELECT * FROM t_user_wechat WHERE  phone="{userphone}"'
            sql6 = f'SELECT * FROM t_user_alipay  WHERE  phone="{userphone}"'
            try:
                # 执行SQL语句
                count1=cursor.execute(sql5)
                if count1 >= 1:
                    print("查询到%d条微信账号数据" % count1)
                    cursor.execute(sql1)
                    # 提交到数据库执行
                    connection.commit()
                    print("删除微信账号数据成功!")
                else:
                    print("没有查询到有微信账号!")

                count3 = cursor.execute(sql6)
                if count3 >= 1:
                    print("查询到%d条支付宝账号数据" % count3)
                    cursor.execute(sql3)
                    # 提交到数据库执行
                    connection.commit()
                    print("删除支付宝账号数据成功!")
                else:
                    print("没有查询到有支付宝账号!")

                cursor.execute(sql2)
                cursor.execute(sql4)
                # 提交到数据库执行
                connection.commit()

            except Exception as e:
                print("删除数据失败:case%s" % e)
                QMessageBox.about(self, '提示', '删除数据失败!')
                # 发生错误时回滚
                connection.rollback()

            finally:
                # 关闭游标连接
                cursor.close()
                # 关闭数据库连接
                connection.close()

    def FindUser(self):
        try:
            connection = pymysql.connect(host="-6618.98.100.194", port=23306, user='root', password="ZKtest@2020",
                                         db="web_db")
            print('数据库连接成功!')
            userphone = self.lineEdit_3.text()
            cursor = connection.cursor(cursor=pymysql.cursors.DictCursor)  # 获取游标
            sql7 = f'SELECT * FROM  t_user_platform_union  WHERE  phone="{userphone}"'
            # 执行SQL语句
            cursor.execute(sql7)
            subid=cursor.fetchall()[0]["sub_id"]
            print('查询到userid是:'+f'{subid}')
            reply = QMessageBox.information(self, "确认", "确认清除?", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
            if reply == QMessageBox.No:
                print('退出')
                pass
            else:
                try:
                    print("删除数据进行中...")
                    cursor = connection.cursor()  # 获取游标
                    sql8 = f'DELETE FROM t_coupon_task_finish WHERE  user_id="{subid}"'
                    cursor.execute(sql8)
                    # 提交到数据库执行
                    connection.commit()
                    print("清除新手任务成功!")

                except Exception as e:
                    print("删除数据失败:case%s" % e)
                    QMessageBox.about(self, '提示', '删除数据失败!')
                    # 发生错误时回滚
                    connection.rollback()

                finally:
                    # 关闭游标连接
                    cursor.close()
                    # 关闭数据库连接
                    connection.close()

        except Exception as e:
            print(e)

    def denglu(self):
        username = self.lineEdit_9.text()
        url = "https:managerlogin/gettoken"
        payload = {"number": username, "password": "c4ca4238a0b923820dcc509a6f75849b","ime":"868597059438958"}
        headers = {

            'Content-Type': 'application/json',
        }
        try:
            response = requests.post(url, headers=headers, json=payload)
            print('收费员登录中...')
            if response.json()["res"]["codeMsg"] == None:
                print('收费员登录成功!')
                print('请执行上班操作!')
                self.token=response.json()["res"]["data"]["token"]

            elif response.json()["res"]["codeMsg"].strip() == "用戶不存在":  # 去掉字符串中其他符号
                print('用户不存在!')
            else:
                print('请求异常!')

        except Exception as e:
            print(e)

    def shangban(self):
        url = "https:alarm/work/start"
        payload = {"roleId": 582, "roadId": ["316232857695551498"], "addr": "","latitude": "","longitude": ""}
        headers = {

            'authdst': '121609970406916096',
            'linkid':'119761632728449025',
            'userid':'121609970406916096',
            'Content-Type': 'application/json'
        }
        try:
            response = requests.post(url, headers=headers, json=payload)
            print('收费员上班中...')
            if response.json()["res"]["codeMsg"] == None:
                print('收费员上班成功!')
                print('请执行建单操作!')
            else:
                print("上班失败,厦门中卡测试2区已有人上班")

        except Exception as e:
            print(e)

    def xiaban(self):
        url = "https:alarm/work/end"
        payload = {"roleId": 582, "roadId": ["316232857695551498"], "addr": "","latitude": "","longitude": ""}
        headers = {

            'authdst': '121609970406916096',
            'linkid':'119761632728449025',
            'userid':'121609970406916096',
            'Content-Type': 'application/json'
        }
        try:
            response = requests.post(url, headers=headers, json=payload)
            print('收费员下班中...')
            if response.json()["res"]["codeMsg"] == None:
                print('收费员下班成功!')
            else:
                print("请求异常")

        except Exception as e:
            print(e)

    def jiandan(self):

        url = "https:rosideorder/order/create"
        startTime=self.dateTimeEdit.text()
        carno=self.lineEdit_5.text()
        payload = {"parkId": "11112", "startTime": startTime, "carNo":carno,"enterpriseId": "119761632728449025","createName": "123","newEnergy": 0,"carType": 1}
        headers = {

            'authdst': '121609970406916096',
            'linkid':'119761632728449025',
            'userid':'121609970406916096',
            'Content-Type': 'application/json'
        }
        try:
            response = requests.post(url, headers=headers, json=payload)
            print('创建订单中...')
            if response.json()["res"]["codeMsg"] == None:
                print('创建订单成功!')
            else:
                print("请求异常")

            url = 'rosideorder/order/listex'
            parms01 = {
                'page': 1,'pageSize':10000,'status':1,'roadId':'316232857695551498','roleId':582
            }
            headers = {

                'authdst': '121609970406916096',
                'linkid': '119761632728449025',
                'userid': '121609970406916096',
                'Content-Type': 'application/json'
            }
            ret = requests.get(url, headers=headers, params=parms01)
            #print(ret.json()["res"]["data"]["result"]["list"])
            for i in ret.json()["res"]["data"]["result"]["list"]:
                #print(i)
                if i["parkId"]== "11112":
                    self.lineEdit_13.setText(i["orderId"])

        except Exception as e:
            print(e)

    def yijiaofei(self):
        try:
            url = "https:rosideorder/order/pay"
            endTime=self.dateTimeEdit_3.text()
            orderId=self.lineEdit_13.text()
            payload = {"endTime": endTime, "orderId": orderId, "userName":"123","type": 0}
            headers = {

                'authdst': '121609970406916096',
                'linkid':'119761632728449025',
                'userid':'121609970406916096',
                'Content-Type': 'application/json'
            }

            response = requests.post(url, headers=headers, json=payload)
            print('结算订单中...')
            if response.json()["res"]["codeMsg"] == None:
                print('结算订单成功!')
            else:
                print("请求异常")

        except Exception as e:
            print(e)

    def wijiaofei(self):
        try:
            url = "https:rosideorder/order/pay"
            endTime=self.dateTimeEdit_3.text()
            orderId=self.lineEdit_13.text()
            payload = {"endTime": endTime, "orderId": orderId, "userName":"123","type": 1}
            headers = {

                'authdst': '121609970406916096',
                'linkid':'119761632728449025',
                'userid':'121609970406916096',
                'Content-Type': 'application/json'
            }

            response = requests.post(url, headers=headers, json=payload)
            print('结算订单中...')
            if response.json()["res"]["codeMsg"] == None:
                print('结算订单成功!')
            else:
                print("请求异常")

        except Exception as e:
            print(e)



if __name__ == '__main__':
    app = QApplication(sys.argv)
    mc = MyClass()
    sys.exit(app.exec_())


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提高测试人员测试效率之GUI工具 的相关文章

  • Qt 的几个常用部件 -- QFrame

    文章目录 基本信息 公共类型 可用来设置的 详细描述 可以处理的事件 基本信息 头文件 include
  • Python GUI案例之看图猜成语开发(第三篇)

    Python GUI案例之看图猜成语 第三篇 前言 看图猜成语小程序开发 第三篇 游戏闯关模式页面 Python GUI案例之看图猜成语开发 第一篇 Python GUI案例之看图猜成语开发 第二篇 Python GUI案例之看图猜成语开发
  • Java实现简单的图形绘制程序(多种图形,多种颜色)

    今天我用GUI图形绘制组件 做了一个图形绘制工具 实现了连续划线 划线效果 图形方面支持直线 圆 椭圆 正方形 长方形的绘制 颜色选择方面支持红色 橙色 黄色 绿色 白色 蓝色 粉色 效果预览 文件树 文件准备 这几张图片被存放在了src
  • gqrx编译过程记录

    gqrx编译过程记录 目标 环境 编译 下载源代码 建立编译位置 修改CMakefile txt中的模块 编译安装 运行界面 没有更多 目标 在ubuntun 20 04桌面版编译gqrx 通过USRP 205mini实现收音机功能 环境
  • 用Python做一个简单的视频播放器

    相关文件 关注小编 私信小编领取就好啦 开发工具 Python版本 3 7 8 相关模块 pyqt5模块 以及一些python自带的模块 搭建环境 安装Python并添加到环境变量 pip安装需要的相关模块即可 原理介绍 这里我们主要利用P
  • QT界面GUI设计之Lable图片及文字显示

    QT界面GUI设计之Lable图片及文字显示 今天主要写一下Qt界面设计的Label相关用法 因为没有系统的学习 所以今天发现以前错了好多 今天记录一下 Label的相关用法 首先是搭建一个Label框 这个简单 在设计师里直接拖进去就可以
  • 发现一个xdotool,是个神器

    xdotool是linux下 类似 按键精灵 的工具 在一些自动测试时 经常用到 以上为xdotool正常使用 比如说 模拟击键a xdotool key a 模拟两个键alt tab xdotool key alt Tab 自动输入wor
  • JAVAFX_Effect效果介绍

    JAVAFX Effect介绍 学习记录 慢慢完善 Bloom 发光效果 InnerShadow 内阴影 Lighting 光照 BoxBlur 方框模糊 DisplacementMap 位移置换 DropShadow 阴影 Perspec
  • PyQty5—第四课:GUI小程序界面设计(附完整代码)

    在第一节课中我们已经学会了PyQty5的安装 以及配置好了两个环境 如果还没有看到的小伙伴可以前去考古 点我 今天我们将会继续学习PyQty5的设计界面的认识 也会带领大家一步一步设计出一个小GUI作品 首先我们创建一个py文件 然后右击
  • FFT算法和DFT算法C语言实现(赋详解)

    声明 本人在校期间主修过 数字信号处理 这门课程 对离散傅里叶变换 DFT 和快速傅里叶变换 FFT 深有了解 现编写了基于C语言的FFT算法 已完成对抽样序列的FFT变换并通过窗口输出 编写思路 由于FFT变换里面含有对虚数的运算 现将输
  • Qt D、Q 指针学习和二进制兼容

    文章目录 Qt 中 D Q 指针的实现 Qt 中 D Q 指针的实现 Qt 中 D Q 指针机制的实现是通过宏定义 实现代码在 qtbase gt src gt corelib gt qglobal h 和 qobject h qobjec
  • 【Qt教程】4.1 - Qt5 文件系统 QFile文件读写操作

    1 Qt文件系统简介 QFile 文件系统是应用程序必不可少的部分 Qt作为一个通用开发库 提供了跨平台的文件操作能力 Qt通过 QIODevice 提供了对I O设备的抽象 使这些设备具有读写字节块的能力 在所有的I O设备中 文件I O
  • 用Qt写一个简单的音乐播放器(二):增加界面(开始和暂停音乐)

    一 前言 在用Qt写一个简单的音乐播放器 一 使用QMediaPlayer播放音乐中 我们已经知道如何去使用QMediaPlayer播放音乐 但是一个对于一个音乐播放器来说 这是远远不够的 至少我们需要有一个简单的用户操作界面吧 让用户开业
  • QT vector转QVector(来自stackflow)

    std vector
  • Java项目---开发一个学生成绩管理系统(使用mysql数据库)

    Java项目 开发一个学生成绩管理系统 使用mysql数据库 1 设计数据库 2 添加jdbc驱动包及数据库连接 3 修改代码之前 我们还需要将数据库中用到的列名进行定义 定义在一个新的Applicant类里面 并且再get set将其封装
  • 【Qt教程】1.9 - Qt5菜单栏、工具栏、状态栏、核心窗口、浮动窗口、QMainWindow

    1 窗口应用布局样式及组成 PC端软件 最基本的一个窗口应用布局样式 如下 大体可分为菜单栏 工具栏 状态栏 核心窗口 浮动窗口 使用时按需相互组合 2 Qt中调用这些控件 1 新建一个工程 使用QMainWindow类 2 例程源码 具体
  • LVGL7.5版本 触摸与键盘输入(API)对接(一)

    LVGL7 5版本 触摸与键盘输入 LVGL7 5版本 触摸与键盘输入 API 对接 一 前言 一 indev输入设备的种类介绍 二 移植Touchpad与Keypad Touchpad Keypad Keypad测试示例 本篇完 LVGL
  • 修改lvgl Linux demo使用tslib获取触摸坐标

    1 为什么要修改 o 交叉编译官方lvgl linux demo发现触摸坐标不准确 官方demo获取坐标的做法是 evdev fd open EVDEV NAME O RDWR O NOCTTY O NDELAY if evdev fd 1
  • PyQt 布局:创建具有专业外观的 GUI 应用程序

    目录 在 GUI 上布置图形元素 储备 PyQt 布局库 Using General Purpose Layout Managers 构建水平布局 QHBoxLayout 构建垂直布局 QVBoxLayout 在网格中排列小部件 QGrid
  • 使用 Tkinter 进行 Python GUI 编程

    目录 Building Your First Python GUI Application With Tkinter 添加小部件 检查你的理解情况 Working With Widgets 使用标签小部件显示文本和图像 使用按钮小部件显示可

随机推荐