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

2024-03-08 23:59

本文主要是介绍提高测试人员测试效率之GUI工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如何有效的去提高测试效率,在一个团队当中,肯定会存在部分人员无法熟悉数据库操作的情况,这个时候我们就可以通过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('退出')passelse:if self.comboBox.currentText()=="微信":clientType=0else:clientType=1phone=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('退出')passelse: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('退出')passelse: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_())

这篇关于提高测试人员测试效率之GUI工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/788854

相关文章

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Java利用@SneakyThrows注解提升异常处理效率详解

《Java利用@SneakyThrows注解提升异常处理效率详解》这篇文章将深度剖析@SneakyThrows的原理,用法,适用场景以及隐藏的陷阱,看看它如何让Java异常处理效率飙升50%,感兴趣的... 目录前言一、检查型异常的“诅咒”:为什么Java开发者讨厌它1.1 检查型异常的痛点1.2 为什么说

MySQL慢查询工具的使用小结

《MySQL慢查询工具的使用小结》使用MySQL的慢查询工具可以帮助开发者识别和优化性能不佳的SQL查询,本文就来介绍一下MySQL的慢查询工具,具有一定的参考价值,感兴趣的可以了解一下... 目录一、启用慢查询日志1.1 编辑mysql配置文件1.2 重启MySQL服务二、配置动态参数(可选)三、分析慢查

基于Python实现进阶版PDF合并/拆分工具

《基于Python实现进阶版PDF合并/拆分工具》在数字化时代,PDF文件已成为日常工作和学习中不可或缺的一部分,本文将详细介绍一款简单易用的PDF工具,帮助用户轻松完成PDF文件的合并与拆分操作... 目录工具概述环境准备界面说明合并PDF文件拆分PDF文件高级技巧常见问题完整源代码总结在数字化时代,PD

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

Python按照24个实用大方向精选的上千种工具库汇总整理

《Python按照24个实用大方向精选的上千种工具库汇总整理》本文整理了Python生态中近千个库,涵盖数据处理、图像处理、网络开发、Web框架、人工智能、科学计算、GUI工具、测试框架、环境管理等多... 目录1、数据处理文本处理特殊文本处理html/XML 解析文件处理配置文件处理文档相关日志管理日期和

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自