使用appfox工具测试登录有图片验证码接口的问题

article/2025/9/18 12:09:07

环境简介

服务器环境(运行在虚拟机之上):

环境环境名称
操作系统Win10 1905 专业版
数据库sqlserver 2008R2

本机环境:

环境环境名称
操作系统win10 1905 专业版
产品某GRP高校财政管理软件
中间件软件集成tomcat
运行环境软件集成Java Jdk虚拟机环境
使用编程语言少量 Python、少量JavaScript
测试工具appfox工具

测试介绍

本篇文章的例子主要是针对软件中登录模块因有验证码校验,在接口测试时导致接口无法请求成功。

测试流程的简介

部署测试环境

虚拟机开启系统,打开相关服务及程序,安装测试工具appfox等
appfox工具使用简单介绍:

  1. 配置测试环境
    因我的环境部署在我本地电脑,所以下图地址就使用我本机ip地址,所以此处根据实际情况进行填写
    在这里插入图片描述
    在这里插入图片描述
    2. 创建接口
    在这里插入图片描述
    在这里插入图片描述
    如果有参数可在下面添加相应的参数,请求和响应参数设置都有。
    3. 发送请求
    在这里插入图片描述

对比图如下:

在这里插入图片描述
请求成功后结果:
在这里插入图片描述
这就是appfox发送一个请求简单的步骤,接下来就详细解释其中几步的含义及扩展的

步骤分析

1. 第一步

在测试接口之前需要抓包进行分析其地址、参数等信息,然后再使用工具创建相应的接口。
通过浏览器抓包结果如下:
接口一:http://127.0.0.1:8188/pub/user/getGifCode (获取验证码)
接口信息如下:
在这里插入图片描述
返回信息:
在这里插入图片描述
注:返回信息中BAS64就是验证码图片的地址
接口二:http://127.0.0.1:8188/pub/user/login (登录接口)
在这里插入图片描述
返回信息:
在这里插入图片描述

2. 第二步
根据上步所掌握的信息在appfox中添加接口,如图:
在这里插入图片描述
在上图中AUTHCODE和GUID这两个字段的值我设置的是**{{变量名}}**的形式,这其实就是变量传参的写法,因为每次请求验证码会变,从而这两个参数是可变的,所以需要用变量进行接收参数,至于如何实现到后面再详细说。

文档写完后就可以到运行页签进行相应的配置,配置完成后就可点击运行了。具体操作如下:

一、在请求头参数中最好加上下列参数(作用是模拟是浏览器发送请求)
此参数可在浏览器中抓包后,粘贴复制即可:
在这里插入图片描述
浏览器请求信息:
在这里插入图片描述
二、在前置条件中添加处理参数的代码,如下图:
在这里插入图片描述
在这里插入图片描述
代码如下:

//请求接口
pm.sendRequest("http://127.0.0.1:8188/pub/user/getGifCode", function (err, response) {//设置临时变量“GUID”为变量名,response.json()["data"]["GUID"]为变量值//疑惑的可分析脚本请求接口的返回信息格式pm.variables.set("GUID", response.json()["data"]["GUID"]);//打印请求脚本返回信息GUID参数的值  (检查分析用的)console.log(response.json()["data"]["GUID"]);//将脚本返回信息中BAS64参数值赋值给变量urlvar url = response.json()["data"]["BAS64"];//执行外部程序(就是其他代码文件),将代码文件打印在后台的值赋值给code变量var code = pm.execute('getimgcode.py', [url]);//使用正则表达式处理返回值,作用只取值的多位为字母的值code = /[a-zA-Z]+/.exec(code)[0]//打印code变量值console.log(code);//设置临时变量AUTOCODE,值为codepm.variables.set("AUTHCODE", code);});

引用外部文件的代码片段如下:
外部程序是使用Python编程语言写的

 #下载ddddocr库,pip为Python包管理工具,所以使用时需有Python环境pip install ddddocr      
import ddddocr          #导入ddddocr库(处理验证码)
import urllib.request   #导入urllib.request方法(下载文件)
import sys              #导入sys模块(处理参数问题)def getcode(url):#下载地址为url中的文件,‘code.png’为下载后的文件名urllib.request.urlretrieve(url, 'code.png')#实例化ddddocr对象ocr = ddddocr.DdddOcr()#将文件以二进制的方式读取with open("code.png","rb") as f:image = f.read() #读取信息赋值给image变量catch = ocr.classification(image) #让ddddocr实例处理数据,然后赋值给变量catchprint(catch)print('dss')
url = sys.argv[1] #赋值入了,因外部传进的参数为元组(数组),第一个为文件执行路径,第二个为传递的参数
getcode(url) #将url值传入函数进行调用

重点:外部程序必须放在appfox指定的路径下,不然appfox执行不了
在这里插入图片描述
将外部程序文件直接复制到此文件夹下即可:
在这里插入图片描述

body参数设置
在这里插入图片描述
配置完成后即可点击发送:
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/6OOGnkXQ.shtml

相关文章

性能服务器图片介绍大图,服务端图片图片上传接口性能压测总结

服务端图片上传接口性能压测总结 一。性能测试时需要关注点 用户操作的相应时间 服务器资源使用情况是否合理 应用服务器和数据库资源使用是否合理 系统能否实现扩展 系统最多支持多少用户访问、系统最大业务处理量是多少 系统性能可能存在的瓶颈在哪里 更换那些设备可以提高性…

生成9mb、10mb、20mb、30mb的星云图片,常用于图片测试

前言 在开发中经常会遇到图片上传问题 测试5mb、10mb、20mb等的图片上传时间 测试对10mb以上的图片限制上传 但是这么大的图片也不好找或者是我们想要一个50mb左右的图片,怎么可以快速简单的做出来?? 那你就来对地方了!&…

postman测试上传图片接口步骤教程

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,前端也要学会使用,只有这样,当接口调试不通的时候,用测试工具,才能够更有底气的甩一张截图给你家的后端,瞧,这是你写的bug。 下…

【软件测试】测试的分类 图片梳理 多图预警

按照开发阶段来分(对应软件测试V模型更好理解) 1. 单元测试:针对程序内部的最小模块进行测试 测试阶段:编码后或编码前(TDD Test-Driven-Development 测试驱动开发,编码前测试就是写一个测试脚本&#xff…

Jmeter压力测试图片上传

最近在写http图片上传,需要进行压力测试一番; 这里我就分享一下测试教程: 先下载安装jmeter http://jmeter.apache.org/download_jmeter.cgi 安装完成打开jmeter 添加线程组: 添加HTTP请求测试: 添加监听器: 编写HTTP请求填写: 选择图片路径: 对于图形结果的解释: 样本数目…

制作LCD 的测试图片RGB666格式

缘起 由于工作原因,小弟需要调试和测试AM335x上的AT070TN83这块7寸的显示屏。查datasheet发现他的格式为RGB666,所以想着制作一张RGB666的BMP格式的图片,结果发现BMP常见为RGB888和RGB565,没有RGB666这种格式的BMP图片. 之前用的测试方法是:…

YOLOv3批量测试图片并保存在自定义文件夹下

YOLOv3的网络训练教程在网上都能找到,最重要是依赖于官网github上的issues解决,如果有些问题不清楚可以百度搜索到,这篇文章主要是针对于训练好自己的网络后的测试命令以及实现批量测试图片并保存的操作: 先说测试并返回评价指标的…

使用mmdetection测试图片

本人刚入门目标检测,发现了一个开源的工具箱mmdetection,便自己使用里面的模型试着测试一张图片,网上大多数博客写的还是不够详细,所以想自己写一篇,方便大家及自己今后可以回顾。 首先,mmdetection的安装…

用于测试图片类型限制、图片大小限制的文件

文章目录 1、图片类型2、文件大小测试3、相关文件打包下载 相信大家测试的时候常常会遇到如下 上传图片等功能 那么遇到此类功能该如何进行测试呢? 这边首先需要提取这些功能的测试点: 该功能全面的测试点提取已经有大佬弄出来了,这边我就…

8080端口被占用处理方法

查看被占用的端口号: netstat -ano | findstr 8080杀死占用的端口号 taskkill /pid 14188 /f

怎么查看8080端口被占用详细教程

开始---->运行---->cmd,或者是windowR组合键,调出命令窗口 输入命令:netstat -ano,列出所有端口的情况。查找8080端口 打开任务管理器:Ctrt Alt . 或 CtrlShiftEsc 看找 PID : 4764 5. 右键&…

解决tomcat的8080端口被占用

解决tomcat的8080端口被占用 1.win R,输入cmd回车进入dos界面 2.输入netstat -ano|findstr 8080 查看占用8080端口的进程 3.输入taskkill /pid 84980 /f 将显示的进程号(我的是84980)结束掉 ,注意结束这一个就可以了 4.重启tomcat cmd进…

Windows 环境下8080端口被占用,如何查看占用的进程及关闭进程

前言: 最近在写一个vue项目的时候,需要用到本地的8080端口来模拟数据获取,却发现8080端口被占用,莫名奇怪。 坑老是那么多,如何解决? win r 打开程序运行的快速窗口,输入cmd, 进入命令行窗口&…

Windows 关闭8080端口(8080端口被占用)

这个方法两条命令,简单有效! 打开用管理员身份打开命令提示符 输入命令 1、C:\WINDOWS\system32> netstat -o -n -a | findstr :8080 TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 22260 2、C:\WINDOWS\system32> taskkill /F /PID 22260 成功: 已终…

Tomcat默认8080端口被占用了?看我暴力解决

文章目录 前言一、解决思路二、解决步骤1、打开cmd管理员窗口2、输入命令查看端口号和进程号3、通过任务管理器关闭进程 总结 前言 在使用idea开发Java Web的过程中,部署Tomcat之后经常会遇到8080端口被占用的情况,之前在网上搜索了很多解决办法&#x…

80端口或8080端口被占用的解决办法

80端口、8080端口被占用的解决办法 80端口或8080端口,一般Tomcat、JBoss、Oracle默认都会使用这个端口! 所以就需要修改默认端口,让他们能一起协同工作。 《其实SQL2008、SQL2008R2中的“SQL Server Reporting Services (SQL2008)、SQL Ser…

Tomcat 8080 端口经常被占用的2个解决方法

1、关闭占用8080端口的进程:8080端口被占用的话执行startup.bat会报错,可在cmd下执行netstat -ano命令查看8080是否被占用,如果被占用可根据相应的PID号在任务管理器查找并关闭相应进程,然后重启tomcat。此方法弊端是端口被占用就…