首页 > 其他分享 >接口自动化测试框架搭建的思路

接口自动化测试框架搭建的思路

时间:2024-05-04 19:55:46浏览次数:21  
标签:请求 sql 接口 key 自动化 数据 替换 搭建

参数替换的思路

为什么替换参数:请求参数不一定全部都是写死的,有可能存在接口之间的数据依赖

  1. 在Excel中写入特殊标记(如#key#),说明写了特殊标记的地方需要做替换处理
  2. 读取Excel中的参数,通过正则表达式提取出来需要被替换的key,得到一个list
  3. 遍历list,根据list中不同的参数,去不同的地方获取对应的数据(如脚本生成的数据、配置文件来源的数据、默认从管全局变量获取数据)
  4. 获取到需要替换数据的value,设置为全局变量(通过类属性实现)
  5. 遍历list,通过字符串的replace方法进行数据替换
  6. 替换完成后,将替换后的数据转换成python对象

响应结果处理思路

为什么处理响应结果:接口返回数据类型不一致,我们后续需要去响应结果中提取参数,解决参数依赖问题(使用jsonpath)

  1. 我们需要的是json数据,对于所有的返回数据我们进行二次封装,封装成固定的格式
  2. 传入响应数据对象,通过json方式去获取对应的body内容,如果不是json数据那就说明不是我们需要的类型,就会报错,符合要求的数据,直接进行二次封装处理

接口断言思路

  1. 在Excel中新增一个字段expected_data
  2. expected_data字段用来存放期望结果(如:{"code": "200"}),可以写多个key:value键值对,期望结果数据是单独请求结果或者查看接口文档获取到的
  3. 获取期望结果数据,转换成dict类型,再遍历字典的key,然后去接口响应结果中通过key获取对应的value,组成新的字典,这个新的字段就是实际结果
  4. 通过TestCase类的断言方法对希望结果和实际结果进行比对(直接比对字典)
  5. 因为字典数据是无序的,只要两个字典中,key和value这样的键值对是一样的,则不管位置是否一致,我们都认为两个字典是相等的

提取全局变量的思路

  1. 在Excel中新增字段extract_data
  2. 将extract_data字段中,写入需要提取的数据(如:{"token": "523452345234"})
  3. key标识要去响应结果中提取的key,value标是提取key的jsonpath表达式
  4. 获取extract_data数据,转换成dict类型,再遍历字典的key和value,通过key和value(jsonpath表达式),从响应结果中提取对应key的值
  5. 提取出来数据后,通过类属性设置为全局变量(属性的key就是刚才遍历的key,属性的值为通过jsonpath表达式提取出来的值)

鉴权思路

为什么鉴权:一些接口需要登录之后才能够请求(相当于是接口的前置条件)

  1. 将接口的前置条件放到该接口之前执行,执行后通过提取token的方式设置请求头完成鉴权
  2. 提取登录接口响应数据中的token,设置为类属性(全局变量)
  3. 在请求所有接口之前,判断一下类属性是否有token属性,如果有就将token按照要求放入请求头中
  4. 后面的接口请求的时候就统一带上有鉴权信息的请求头

发送请求封装的思路

  1. 发送请求之前去调用鉴权处理的方法,获取最新的请求头数据
  2. 在Excel中,新增is_upload字段,如果该字段为1,则为文件上传接口,否则为普通接口
  3. 判断接口是否是文件上传接口,如果是就调用文件上传方法,如果不是就走else逻辑发送普通请求
  4. 在请求图片上传接口的时候,要对应修改请求字段Content_Type: multipart/form-data; boundary=----WebKitFormBoundaryOavsXm2eeigLNDtG
  5. 为了跨平台,放到jenkins上做持续集成,将需要上传的图片放到项目images目录下(以iages为例,可随意调整)
  6. 图片上传接口请求完成之后,要将请求头修改为json格式,否则后续非图片上传的接口请求会报错

数据库断言思路

  1. 把图片上传的返回的数据提取出来,设置为全局变量
  2. 拿到全局变量去数据库查询(链接数据库+拼接sql语句)
  3. 在Excel中新增assert_db字段存放数据库断言的期望结果和实际结果获取需要执行的sql语句
  4. 先判断是否需要替换sql的数据,如果要替换,先替换sql语句再执行sql语句,接着断言
  5. sql语句从哈讯的数据返回是元组,如果是设置了返回值为字典数据,需要取值出来

sql语句替换的思路

  1. 获取sql语句
  2. 通过正则表达式判断是否有数据需要替换(有无特殊标记),返回list
  3. 检查list是否有值,有值说明需要替换sql
  4. 替换sql语句都是从全局变量中获取的
  5. 连接数据库
  6. 替换sql语句
  7. 执行sql语句

未注册的手机号生成处理思路(注册)

  1. 通过faker生成一个随机手机号
  2. 去数据库去校验是否已注册,已注册了就重新走第1步和第2步
  3. 如果未重复,直接返回未注册的手机号

url地址中参数替换的处理

  1. 在发请求之前把url地址中的参数替换好就行
  2. url地址中参数的来源,接口响应的结果,提取到全局变量了
  3. 通过re表达式获取需要替换的key_list
  4. 遍历key_list,从全局变量中获取对应的数据对url地址进行替换

日志收集

  1. 日志要还原用户的行为(还原测试用例执行的全过程)
  2. 需要输出日志的地方:方法的入参、出参数据类型、数据转换(jsonstr 转 python对象)
  3. 需要输出日志的地方:测试过程的逻辑选择

为什么要做数据隔离,数据隔离怎么处理

需求:数据驱动,每个sheet都是一个场景,或者是一个接口,场景和接口之间为了不影响执行结果,尽量要做到数据隔离.
如何做数据隔离:

  1. 每次执行sheet里面的测试用例的时候,都清掉全局属性中所有自己设置的属性
    具体步骤:
  2. 读取测试用例数据(所有的sheet,循环读取,循环执行用例)

标签:请求,sql,接口,key,自动化,数据,替换,搭建
From: https://www.cnblogs.com/sjxforfree/p/18172617

相关文章

  • Python自动化测试中JSON数据处理遇到的错误
    在接口自动化测试领域,使用Excel管理测试数据是一种常见的做法。本文将分享一个实际案例,介绍在Python自动化测试框架中,如何从响应结果中提取所需数据,并探讨在处理JSON格式数据时遇到的一个典型问题及其解决方案。首先,让我们了解测试数据的基本格式。在Excel中,我们定义了一个名为ex......
  • 图床搭建(零成本)
    图床搭建(零成本)基于博客园搭建图床,目前最好的,最简便以及无成本的性价比最高的方法前言:使用typora发布博客以及发送给朋友md文档需要打包成压缩包,csdn还无法解码url,于是搭建免费版github+pic图床,但github图床限制1G,超过就会有人工审核,并且传输不稳定,时好时坏七牛虽然高速,但免......
  • Halo博客搭建小记
    准备工作阿里云服务器,操作系统为CentOS7.9.2009x86_64(Py3.7.9)宝塔面板Nginx1.24.0(用于反向代理)已备案的域名ssl证书(https访问)参考官方文档,这里使用DockerCompose进行部署官方文档:使用DockerCompose部署|Halo文档一、安装Docker和DockerCompose1、使用宝......
  • 从零搭建Prometheus监控报警系统
    从零开始搭建Prometheus自动监控报警系统 从零搭建Prometheus监控报警系统什么是Prometheus?Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是GoogleBorgMon监控系统的开源版本。2016年由Google发起Linux基金会旗......
  • GeoServer开发环境搭建
    前言本文用于记录GeoServer开发环境的搭建过程通过GeoServer发布计划可以看到,在2.23.x版本开始,会移除对jdk1.8的支持。那么当前我们会选择2.22.x版本进行研究环境JAVA:1.8或11MavenGitAction获取源码gitclonegit://github.com/geoserver/geoserver.gitgeoserver#......
  • 一键自动化博客发布工具,chrome和firfox详细配置
    blog-auto-publishing-tools博客自动发布工具现在已经可以同时支持chrome和firefox了。很多小伙伴可能对于如何进行配置和启动不是很了解,今天带给大家一个详细的保姆教程,只需要跟着我的步骤一步来就可以无障碍启动了。前提条件前提条件当然是先下载blog-auto-publishing-tools......
  • CMakeLists.txt --- 导入接口库(预编译库)
    以接口库的方式导入预编译库cmake_minimum_required(VERSION3.9)project(test)set(CMAKE_BUILD_TYPEDebug)set(CMAKE_C_FLAGS"$ENV{CFLAGS}-O2-Wall-pthread")set(CMAKE_CXX_FLAGS"$ENV{CFLAGS}-O2-Wall-pthread-std=c++11-std=gnu++11")#设置mo......
  • 阿里云ECS服务器快速搭建企业建站环境
    截止目前,wdCP是小编用过最适合菜鸟的一套通过WEB控制和管理服务器的linux服务器管理系统以及虚拟主机管理系统。安装步骤如下:第一步:远程下载安装压缩包wgethttp://dl.wdlinux.cn/files/lanmp_v3.1.tar.gz第二步:解压缩包tarzxvflanmp_v3.1.tar.gz第三步:执行安装shlanmp.......
  • [附视频教程]DNF_地下城与勇士_单机+联网 搭建架设教程
    搭建源码文件+视频教程联网:https://githubs.xyz/boot/?app=14单机:https://githubs.xyz/boot/?app=15注意:请不要将游戏进行商业化,一切后果概不负责。仅供单机,好友之间进行娱乐!!注意:请不要将游戏进行商业化,一切后果概不负责。仅供单机,好友之间进行娱乐!!注意:请不要将游戏进行商......
  • C# 搭建一个 基于ISqlSugarClient 三层架构框架 涉及数据库仓储 然后中间又有业务逻辑
    要在C#中搭建基于ISqlSugarClient的三层架构框架,你需要定义数据访问层(DAL)、业务逻辑层(BLL)和表现层(UI)。下面是一个完整的例子,涉及数据库仓储、业务逻辑层,以及依赖注入。这个例子基于ASP.NETCoreMVC构建,使用ISqlSugarClient来处理数据访问。这个例子中,我们将使用User作为一个简单......