提高测试人员测试效率之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

相关文章

揭秘未来艺术:AI绘画工具全面介绍

📑前言 随着科技的飞速发展,人工智能(AI)已经逐渐渗透到我们生活的方方面面。在艺术创作领域,AI技术同样展现出了其独特的魅力。今天,我们就来一起探索这个神秘而引人入胜的领域,深入了解AI绘画工具的奥秘及其为艺术创作带来的革命性变革。 一、AI绘画工具的崛起 1.1 颠覆传统绘画模式 在过去,绘画是艺术家们通过手中的画笔,蘸取颜料,在画布上自由挥洒的创造性过程。然而,随着AI绘画工

墨刀原型工具-小白入门篇

墨刀原型工具-小白入门篇 简介 随着互联网的发展和用户体验的重要性越来越受到重视,原型设计逐渐成为了产品设计中的重要环节。墨刀作为一款原型设计工具,以其简洁、易用的特点,受到了很多设计师的喜爱。本文将介绍墨刀原型工具的基本使用方法,以帮助小白快速上手。 第一章:认识墨刀原型工具 1.1 什么是墨刀原型工具 墨刀是一款基于Web的原型设计工具,可以帮助设计师快速创建交互原型,并且可以与团队

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

Windows/macOS/Linux 安装 Redis 和 Redis Desktop Manager 可视化工具

本文所有安装都在macOS High Sierra 10.13.4进行,Windows安装相对容易些,Linux安装与macOS类似,文中会做区分讲解 1. Redis安装 1.下载Redis https://redis.io/download 把下载的源码更名为redis-4.0.9-source,我喜欢跟maven、Tomcat放在一起,就放到/Users/zhan/Documents

OpenCompass:大模型测评工具

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模型问答项目问答性能评估方法大模型数据侧总结大模型token等基本概念及参数和内存的关系大模型应用开发-华为大模型生态规划从零开始的LLaMA-Factor

简鹿文件批量重命名:一款文件批量改名高手都在用的工具

作为 IT 行业的搬砖民工,互联网的数据量爆炸性增长,文件管理成为了一项日益重要的任务。"简鹿文件批量重命名"应运而生,旨在为用户提供一个高效、灵活的解决方案,以应对繁琐的文件命名、排序、创建及属性修改等挑战。 这款软件凭借其一键式操作、强大的自定义规则导入、以及全面的批量处理能力,极大地简化了文件管理流程,尤其适合处理大量文件的个人用户及企业环境,是提高工作效率、保持文件系统整洁的得力助手

将一维机械振动信号构造为训练集和测试集(Python)

从如下链接中下载轴承数据集。 https://www.sciencedirect.com/science/article/pii/S2352340918314124 import numpy as npimport scipy.io as sioimport matplotlib.pyplot as pltimport statistics as statsimport pandas

如何用外呼工具和CRM管理系统形成销售闭环

使用外呼工具和CRM管理系统形成销售闭环是一个系统性的过程,它涉及客户数据的整合、个性化的营销活动、销售与市场活动的协作、顾客行为的追踪与理解以及营销成效的评估与优化等多个环节。 以下是如何将外呼工具和CRM管理系统有效结合以形成销售闭环的步骤: 1. 客户数据的整合与分析    - 外呼工具在与客户进行初步沟通时,会收集到客户的基本信息和初步需求。    - 这些信息随后被输入到CRM管

ASP.Net.WebAPI和工具PostMan

1.WebAPI概述 1.1 WebAPI WebAPI 是一种传统的方式,用于构建和暴露 RESTUI风格的Web服务。它提供了丰富的功能和灵活性,可以处理各种HTTP请求,并支持各种数据格式,如JSON、XML等。 WebAPI使用控制器(Controllers)和动作方法(ActionMethods)的概念、通过路由配置将请求映射到相应的方法上。 开发人员可以使用各种属性和过滤器来处

使用XmlPullParser制作BindView工具

在之前我写过了一个BindView的工具,之前使用的最要是正则表达的文本分析做的。最近,工作我认识了Android的XML解析,我又想起了这个问题。发现这个问题,其实用XmlPullParser更好解决。所以我重新写了这个工具。简单多了,而且不用格式化代码。 先分析一下如何写,简易思路如下 Created with Raphaël 2.1.0 输入文本路径 读取x