【实战】随手写个接口测试工具,让领导瞧瞧我的能耐

2024-03-21 00:58

本文主要是介绍【实战】随手写个接口测试工具,让领导瞧瞧我的能耐,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        在工作过程中相信很多人都或多或少的知道甚至使用过postman或jmeter等工具做接口测试,那么postman/jmeter这个工具是怎么来的呢?今天我就带大家初步实践写一个简单的类似postman的接口测试工具。

本文主要利用pyside2+python设计一个简单的接口测试工具,并打包成exe文件,通过这一系列实践,既能将自己写好的工具以图形界面的形式提供给他人使用,又能防止源代码泄漏。

了解常用的GUI库

        在开始进行实战前,可简单了解一下几种常见的图形化界面设计需要的库:

Tkinter(是python最简单的图形化模块)

Pyqt(是python最复杂也是使用最广泛的图形化模块,PyQt的采用的是GPLv3),若使用该库,则要求代码是开源的,若是引用该库,但是代码非开源的,可能会面临起诉

PySide2 :Pyside2的LGPL协议要求动态链接可以闭源商用,一般情况下选择该库进行GUI设计

环境安装

        pip install PySide2       #PySide2是一个GUI库在,主要用于设计程序界面

        pip install pyinstaller     # pyinstaller主要用于将代码打包成exe文件时使用的模块

        若是直接安装失败,可百度豆瓣源地址进行安装

界面设计-输出UI格式文件

        对接口工具的页面进行设计,设计完成后会形成一个UI格式的文件。本文实践案例示范完成一个简单的接口测试工具,界面设计如下图,分为三个部分:

第一个部分:请求方法、请求地址、发送请求、清空数据

第二个部分:请求头、请求体

第三个部分:响应信息头、响应数据

PySide2图形工具相关组件和使用方法介绍:

    1. 按钮:pushButton
      1. 点击按钮clicked()
    2. 单行文本框:lineEdit
      1. 获取文本text()
      2. 用户名或者其他需要明文显示时,则可选择echoMode=Normal
      3. 密码类的需要直接“*”显示,则可选择echoMode=Password
      4. 密码类的需要编辑时明文显示,编辑结束则“*”显示,则可选择echoMode= PasswordEchoOnEdit
    3. 多行文本框:QPlainTextEdit
      1. 获取多行文本:toPlainText()
      2. 设置提示文本:setPlaceholderText (‘提示文本’)
    4. 文本浏览框:textBrowser
      1. 获取文本:toPlainText()
      2. 设置提示文本:setPlaceholderText (‘提示文本’)
    5. 组合选择框:QComBox
      1. 通过addItem添加单个选项,通过addItems([,,])添加多个选项
      2. 通过setCurrentText('请选择')设置默认当前选项的值
      3. 通过currentText()获取选项框的当前值
    6. 文本标签:label

界面布局

界面布局说白了就是各个控件的位置区域调整,常见的布局有三种:水平布局,垂直布局,栅格布局。

水平布局:就是各个组件水平排列对齐

垂直布局:就是各个组件垂直排列对齐

栅格布局:栅格布局与水平布局和垂直布局皆不一样,网格布局内部通过一个无形的网格来对其中的控件进行布局

最后为了能让布局内的控件随着窗口自动缩放,可在窗口空白区域(非控件区域)右键选择任意一种布局即可

代码设计-输出py格式文件

本项目的代码可以分为两个部分:

第一部分:引用设计好的界面组件

第二部分:接口请求的逻辑代码

第一部分:初始化图形界面

引用图形界面的元素的方式,跟进行UI自动化的元素定位有点类似:

  1. 定义通过ui对象
  2. 找到对应的元素名称
  3. 对该元素进行相应的操作

调用图形界面的整体过程如下:

  1. 创建app程序对象
  2. 获取图形对象:打开ui文件
  3. 读取ui文件
  4. 加载ui文件内的对象
  5. 关闭ui文件
  6. 展示图形界面
  7. 运行程序

第二部分:业务逻辑处理

处理业务逻辑时,需要涉及到三个内容:

1-通过图形界面获取用户数据

2-通过点击事件触发业务逻辑处理

3-将业务处理结果展示在图形界面上

代码说明:

1.操作图形界面的组件的格式:ui对象.组件的objectname.动作   (通过“.”连接)

  1. 初始化请求方法的选项值:GET\POST\PUT\DELETE
  2. 定义接口请求函数
    1. 通过图形界面控件获取用户输入的数据:获取的数据是字符串格式,需要转化为json格式
    2. 发起接口请求:利用request库完成接口请求
    3. 获取响应信息头、响应数据:
    4. 响应信息添加到图形界面上展示:获取到的数据通过append添加到文本浏览器前,需要对将数据转为str格式
  3. 定义清空数据函数

事先明确好,点击清楚按钮时,需要清空哪些控件的数据或将选择框设置什么默认值。

本文设计点击清空按钮时做以下两个操作:

  1. 清空响应信息头、响应数据两个文本框
  2. 重置请求方法选择框的默认值为“请选择”
  1. 点击按钮绑定业务函数

点击后通过connect()方法连接函数方法,格式:

ui对象.按钮objectname. clicked.connect

发送按钮:ui.send_pushButton.clicked.connect(send_request)

清空按钮:ui.clear_pushButton.clicked.connect(clear)

项目打包-避免代码泄漏,方便他人使用工具

程序写好了后,图形界面也设计好了之后,每次使用都要运行代码闲的很麻烦,而且其他人还得拷贝你的代码。所以这个时候就可以用到“打包”的功能,通过打包将工具生成为一个exe程序,其他人可直接使用。具体过程如下:

进入项目的py文件夹目录下,cmd打开命令窗口,执行打包命令:

pyinstaller -F RequestTool.py --hidden-import PySide2.QtXml

       其中:RequestTool.py为python代码文件

2.打包成功后本地可看到对应的文件夹如下:

3.将界面ui文件复制到dist文件夹目录下

4.双击运行exe文件即可

如果运行程序时不需要后面的命令窗口(黑色窗口,可在进行打包时增加参数-w即可去除该窗口)

项目实战成果

项目内其他成员可直接运行打包好的的exe文件,即可使用接口测试工具V1.0

总结

        所有的产品都不是一蹴而就,都是通过不断地迭代优化而来。本文只是简单的示范了基础的接口测试工具,有兴趣的人可进行第二版本、甚至的第三版本的迭代开发。

写这篇文章的目的在于给大家做个示范,如何将日常学过的GUI编程、接口测试等融合输出成为一个能说的出去的产品,更甚至能合理有效的运用到我们的工作中。

(原文也有发布在”51Testing软件测试网“上哦~)

这篇关于【实战】随手写个接口测试工具,让领导瞧瞧我的能耐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

springboot实战学习(1)(开发模式与环境)

目录 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 (3)前端 二、开发模式 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 Validation:做参数校验Mybatis:做数据库的操作Redis:做缓存Junit:单元测试项目部署:springboot项目部署相关的知识 (3)前端 Vite:Vue项目的脚手架Router:路由Pina:状态管理Eleme

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

模拟实现vector中的常见接口

insert void insert(iterator pos, const T& x){if (_finish == _endofstorage){int n = pos - _start;size_t newcapacity = capacity() == 0 ? 2 : capacity() * 2;reserve(newcapacity);pos = _start + n;//防止迭代

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

深度学习实战:如何利用CNN实现人脸识别考勤系统

1. 何为CNN及其在人脸识别中的应用 卷积神经网络(CNN)是深度学习中的核心技术之一,擅长处理图像数据。CNN通过卷积层提取图像的局部特征,在人脸识别领域尤其适用。CNN的多个层次可以逐步提取面部的特征,最终实现精确的身份识别。对于考勤系统而言,CNN可以自动从摄像头捕捉的视频流中检测并识别出员工的面部。 我们在该项目中采用了 RetinaFace 模型,它基于CNN的结构实现高效、精准的