接口测试大部分都使用接口的响应值作为接口验证的依据,但在与数据库有交互的接口中这种结果判断不足以判断接口的正确性,本文将以jmeter作为接口测试的工具来实现接口的数据库断言

一. 总体思路概述

1. 使用jmeter发起接口请求

2. 使用json提取器获取接口响应结果中的关键内容

3. 使用jmeter发起数据库操作,得到数据库的值

4. 使用BeanShell断言,实现接口响应内容和数据库内容的对比

二. jmeter发起接口请求

以搜索接口为例,业务需求为:通过关键字搜索商品。接口信息如下:

接口信息:

输入参数:

返回结果:

根据以上接口信息在jmeter中添加http 请求,如下图

三. 针对接口请求添加json提取器

添加json提取器是为了获取接口响应中所有name,用来和数据库中查到的name值进行一一对比

3.1 添加json提取器

选中搜索请求--添加--后置处理器--json提取器

3.2 设置json提取器

各项参数解释:

1. Names of created variables:表示json提取器从响应中获取到的内容所存储的变量,随便定义只要不冲突即可,建议起一个有意义的名称,不要写成abc毫无意义的名称

2. JSON Path Expressions:json提取的表达式,表示需要按照这个规则从响应中匹配内容,图中表达式表示匹配响应中的所有name字段对应的值

3. Match No. (0 for Random):匹配结果存储到变量的策略,默认什么都不写就是0

1 0表示随机一个存储的变量中,比如我们匹配了多个name字段的值,那么会随机将其中一个 值赋值给Names of created variables指定的变量

2 -1表示使用数字后缀标识每一个匹配的结果,比如我们匹配了多个name字段的值,那么最终每一个结果都会对应一个变量,变量名称则是name_1、name_2、name_3、name_4 ....

3 X表示把第几个匹配到的值赋值给Names of created variables指定的变量,比如写个2,那么就会把匹配到的第2的name字段的值赋值给name

4. Compute concatenation var:表示如果匹配到多个值,可以将多个值存储在一个变量中,变量名为Names of created variables指定的变量名称加_ALL,比如当前图中就是name_ALL,存储的多个值以,分割

5. Default Values:表示如果json表达式没有匹配到任何值,那么变量的默认值是啥

四. 配置数据库发起数据库请求

以mysql数据库为例

4.1 配置数据库连接元件

配置数据库所需要的jar包,下载mysql-connector-java.5.1.46.jar,可以直接在maven上进行下载,下载地址https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.46

下载好以后放入jmeter目录下的lib/ext目录下,然后重启jmeter

配置jdbc元件,选中线程组--添加--配置元件--JDBC Connection Configuration

核心字段含义

Variable Name for created pool:表示该连接配置的名称,这个名称将会在后续的jdbc请求中使用

Dabase URL:表示数据库实例的连接地址

JDBC Driver class:表示连接驱动类

Username:表示连接数据库实例的用户名

Password:表示连接数据库实例的密码

4.2 数据库请求,请注意该请求需要放在查询接口请求之前

选中线程组--添加--取样器--JDBC Request

核心字段含义

Variable Name of Pool declared in JDBC Connect Configuration:表示要连接的数据库配置名称,与我们上面配置的一致

Query:填写sql语句,这里我们是查询商品表,通过name字段模糊查询,并且只返回了name字段

Result variable name:表示从数据库中查到的内容存到哪个变量里,这里写变量名称

五. 脚本调试

5.1 添加调试取样器,用来查看各个变量的值是否正确

选中线程组--添加--取样器--调试取样器

5.2 添加察看结果树,用来查看请求结果

选中线程组--添加--监听器--察看结果树

5.3 执行测试,查看各个变量的值是否正确

dbname=[{name=天喔 西梅454g}, {name=天喔 盐津桃肉170g/瓶}, {name=天喔很牛牛肉粒(沙爹)150g/袋}, {name=天喔 Q猪香辣小香肠100g/袋}] 数组中存着键值对

name_ALL=天喔 西梅454g,天喔 盐津桃肉170g/瓶,天喔很牛牛肉粒(沙爹)150g/袋,天喔 Q猪香辣小香肠100g/袋 逗号分隔的字符串

六. 使用Beanshell 断言完成接口结果和数据库结果的校验

选中搜索请求--添加--断言--BeanShell 断言

执行整个脚本,执行通过,脚本全貌如下

作  者:Testfan 沙陌老师

出  处:微信公众号:自动化软件测试平台

版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

jmeter json断言_Jmeter接口测试数据库断言的实现与设计相关推荐

  1. beanshell断言_Jmeter之BeanShell断言使用

    1.Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:用来记录日志文件,写入到j ...

  2. jmeter json断言_Jmeter接口测试+压力测试

     jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单.因为jmeter是java开发的,所以运行的时候必须先要 ...

  3. beanshell断言_JMeter使用BeanShell断言

    BeanShell简介 BeanShell是使用Java语法的一套脚本语言,在JMeter的多种组件中都有BeanShell的身影,如: 定时器:BeanShell Timer 前置处理器:BeanS ...

  4. jmeter 跳板机_Jmeter接口测试进阶

    .添加HTTP Cookie 管理器 2.添加CSV Data Set Config 3.添加HTTP请求默认值 4.添加JDBC Connection Configuration 5.添加登录HTT ...

  5. beanshell断言_jmeter之beanshell断言实例

    .首先储存一个接口的响应结果,比如在http请求的后面添加beanshell后置处理器(BeanShell PostProcessor)来储存http请求的响应结果: 1 import org.jso ...

  6. 性能测试——jmeter接口测试复习——断言——响应断言

    {"ret":200,"data":{"err_code":0,"err_msg":""," ...

  7. python断言assert实例_python接口测试assert断言

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! unittest.texttestrunner(verbosity=2).run ...

  8. 传递给beanshell的参数_jmeter基础之断言及参数的关联性

    jmeter参数关联 接口测试中经常会碰到,下一个接口的入参是上个接口的出参,企业中不可能实时进行手工改动,那么就需要用到参数的关联,把接口的响应数据,输出给下一个接口.参数关联我们可以使用正则表达式 ...

  9. python requests接口自动化测试 (数据库断言)

    前言 熟练掌握接口自动化测试体系背后的这些技能和处理问题的思路,实现时间.人力.收益的平衡,对于一个经验尚浅的初.中级测试开发人员来说绝对是一个艰巨的挑战. 五步教会你写接口自动化用例 需要安装三方包 ...

最新文章

  1. c++ opencv编程实现暗通道图像去雾算法_OpenCV图像处理专栏十五 |一种基于亮度均衡的图像阈值分割技术...
  2. matlab神经网络3:模式分类
  3. 【CSDN】设置图片大小
  4. jsp传递参数的四种方法
  5. Android开发推荐资料大合集
  6. Java 之 合成模式
  7. rman备份rman-00554 ,rman-04005错误
  8. MongoDB索引案例一则
  9. gohu恒温花洒使用教程_使用家庭助理构建更好的恒温器
  10. Vdbench工具文件系统测试记录
  11. 《第一行代码》(第二版)广播的问题及其解决
  12. edge浏览器如何新建IE tab
  13. Kali系统安装Visual Studio Code
  14. 二进制 八进制 十进制 转换
  15. 获取文件名,文件名后缀以及elementui多张图片回显
  16. android app 退出功能,Android 完美退出 App (Exit)
  17. 解决steam饥荒联机版(DST Dont Starve Together)启动时error during initialization的方法
  18. 唯品会的html文件,唯品会网页打不开
  19. 【Servlet篇】Response对象详细解读
  20. 在fedora 15 中安装汉语拼音输入法

热门文章

  1. linux中断处理函数参数,第9章 设置ISR(中断处理函数)
  2. linux asm 磁盘管理,asm磁盘管理篇
  3. android多渠道 依赖,android 不同渠道 添加不同依赖jar 使用不同代码
  4. 函数计算镜像加速:从分钟到秒的跨越
  5. JAVA技术周刊第一期:关于JVM你了解多少?看这篇文章就够了!
  6. 工程师如何给女友买包?问问阿里“百事通”
  7. linux开端口不重启,Linux 防火墙开放端口(有时不生效可能是没有保存、重启导致)...
  8. 【枭·音频】感同声受——《暗影火炬城》PS5 HD震动制作
  9. 游戏中常用的寻路算法的分享(4)处理移动中的障碍物
  10. 3D游戏开发套件指南(入门篇)