Jmeter之接口依赖
一、应用场景
1、现在有两个接口,一个是登录,一个查询,但查询接口必须要依赖登录接口的token,那么通过正则表达式提取器提取登录接口的响应结果
2、现在有两个接口,A接口返回列表数据,另一个查询接口的参数是A接口返回的列表的数据
那么为了解决以上两个问题,我们先了解下正则表达式
二、必备的正则表达式:
书写方式为:元字符+限定符
元字符 | 意义 | 限定符 | 意义 |
. | 任意单个字符 | + | 匹配至少大于1次 |
\d | 任意单个数字 | ? | 匹配0次或1次 |
[0-9] | 等价0-9 | * | 匹配0次或多次,贪婪匹配 |
[a-zA-Z] | 等价所有的大小写字母 | {n,} {n,m} {n} | 匹配限定次数 |
三、正则表达式提取器的使用
即在某个请求的响应结果中拿到某个值或某些值
1、操作:在HTTP请求上右击->添加->后置处理器->正则表达式提取器(该提取器是隶属于某个请求下的)
2、正则表达式的书写
需求: 想要获取【软件测试工程师】这个内容
接口返回的部分内容如下:
首先找到左右边界,写好正则表达式,根据边界可以唯一确定取到的值。
步骤:(1)先在响应结果中确定要提取内容的左右边界,那么【软件测试工程师】的左边界是"JobName": ",右边界是",
(2)再将要提取的内容用英文圆括号括起来,即"JobName": "(软件测试工程师)",,注意:一定要根据边界可以唯一确定取到的值。
(3)最后将()内用正则表达式表示出来,即"JobName": "(.{7})"
注意:想从【"JobName": "软件测试工程师","JobName": "开发",】提取到【"JobName": "软件测试工程师",】,如果正则表达式为【"JobName": "(.*)",】
那么提取到的内容是【"JobName": "软件测试工程师","JobName": "开发",】而不是【"JobName": "软件测试工程师",】
3、正则表达式提取器中其他内容
1表示根据正则表达式提取到的结果赋值变量名
2中写的正则表达式可以有多个,如下,而()起到了分组作用
3中$1$表示提取(.{7})的值,$2$表示提取(.*)的值,注意$中间的数字必须从1开始,否则得到的结果为null
4中0表示当根据正则表达式可以匹配到多个内容时,每次会随机取出一个符合条件的值,那如果想拿到符合正则表达式的所有值时,就把4处的地方填-1即可
4、正则表达式提取器结果的查看
在线程组->右键添加->取样器->Debug Sample(调试取样器)
启动线程,调试取样器的结果如图:job指根据正则表达式获取到的内容,注意模板中两个值用-连接,所以job = job_g1-job_g2
job_g1和job_g2分别是$1$和$2$的值
四、在依赖的HTTP请求中利用正则表达式提取到的值
job、job_g1、job_g2是提取到请求1结果值的内容,将作为请求2的参数值,参数格式依然是${变量名},那么应用场景1的接口依赖就解决了
五、foreach循环控制器的使用
正则表达式提取器中匹配数字填-1,匹配到的结果值有多个,如图,在调试取样器中总共有13个值,那么如何将这些值作为请求2的参数呢
可以通过添加ForEach控制器:线程组->添加->逻辑控制器->ForEach控制器
注意:要将依赖接口放在For Each逻辑控制器下面
在调试取样器中的变量名都是menu_X(X是从1开始的整数),而menu正是在正则表达提取器中设置的引用名称;
1中输入变量前缀和正则表达提取器中设置的引用名称要保持一致
2循环字段表示通过调试取样器拿到的变量,暂且称为列表吧,那么这里就填写你想引用列表的范围
3表示你给从列表中取到的每个值赋个变量名,哈哈,是不是很眼熟呢。。。不就是python中学的for循环呢?
即for id in menu:
好了,那如何在接口2中引用这些变量呢?很简单,依旧在接口2中参数中变量以${变量名}的方式,如图:
六、整个测试计划如图:
七、Json Path提取器
适用场景接口返回是json格式的数据
在HTTP请求上右击添加->后置处理器->JSON提取器
比如想要拿到接口1中的canDemo值作为第二个接口的参数,那么可以先在JSON PATH Expression中输入对应的表达式,$表示根节点,点号表示下一级
那么在json提取器中设置变量名,json提取表达式
那么在接口2中如何使用提取到的变量呢?依旧是${变量名}
最后得到的测试计划如图:
八、HTTP Cookie管理器
https://www.cnblogs.com/liulinghua90/p/9257552.html
https://www.cnblogs.com/liulinghua90/p/9257548.html
Jmeter之接口依赖的更多相关文章
- 基于Jmeter的接口自动化测试实践
在去年实施了一年的三端(PC.无线M站.无线APP[Android.IOS])后,今年7月份开始,我们开始进行接口自动化的实施,目前已完成了整个框架的搭建以及接口的持续测试集成.今天做个简单的分享. ...
- Postman实现数字签名,Session依赖, 接口依赖, 异步接口结果轮询
Script(JS)为Postman赋予无限可能 基于Postman 6.1.4 Mac Native版 演示结合user_api_demo实现 PS 最近接到任务, 要把几种基本下单接口调试和持续集 ...
- 4月27号开学! 第6期《jmeter实战接口自动化+性能》课程,零基础也能学
2019年 第6期<jmeter实战接口自动化+性能>课程,4月27号开学! 主讲老师:飞天小子 上课方式:QQ群视频在线教学 本期上课时间:4月27号-6月9号,每周六.周日晚上20:0 ...
- Jmeter Http接口性能测试
Jmeter Http接口性能测试 1. 启动Jmeter Jmeter下载解压即可使用,Jmeter启动,点击D:\ProgramFiles\jmeter\apache-jmeter-2. ...
- Mock接口依赖的使用
mock 能做什么 1.前后端联调,如果你是一个前端页面开发,现在需要开发一个功能:下一个订单,支付页面的接口,根据支付结果,支付成功,展示支付成功页,支付失败,展示支付失败页.要完成此功能,你需要 ...
- python接口测试中常见的两种接口依赖处理方式
一.请求体的字段依赖 这种情况多数是在当前测试的接口,它的前置接口的请求体中的字段要拿来在当前的接口请求体中继续使用,比如修改用户信息的接口,该接口会使用到用户名的字段,该字段是由创建用户时的请求体中 ...
- 【技术博客】 利用Postman和Jmeter进行接口性能测试
利用Postman和Jmeter进行接口性能测试 作者:ZBW 版本:v1.1 在Phylab的开发过程中,对于生成报告接口的性能考量十分重要.原有的Latex接口虽然生成的报告美观,但编译Latex ...
- mock 处理接口依赖
1.输出配置文件如下 login.json [{ "request": { "uri": "/login", "method&qu ...
- Jenkins+Jmeter+Ant接口持续集成
修改时间 修改内容 修改人 2016.5.22 创建 刘永志 2016.6.15 完成 刘永志 前言: 为什么要用Jmeter做接口测试: 当选择这套方案的时候,很多人会问,为什么选择Jmeter做C ...
随机推荐
- leetcode刷题-58最后一个单词
题目 给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度.如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词. 如果不存在最后一个单词,请返回 0 . 说明:一 ...
- 通俗理解线性回归(Linear Regression)
线性回归, 最简单的机器学习算法, 当你看完这篇文章, 你就会发现, 线性回归是多么的简单. 首先, 什么是线性回归. 简单的说, 就是在坐标系中有很多点, 线性回归的目的就是找到一条线使得这些点都在 ...
- html基础:css样式1
h't'm'l中用到css样式有三种方式: 1.在header中增加style标签,在style标签中写 2.用link标签引用css样式文件 3.在需要使用css样式的标签添加style属性 一.在 ...
- 尤雨溪:TypeScript不会取代JavaScript
来源 |evrone.com译者 | 核子可乐策划 | 蔡芳芳 近日,Evrone 与 Vue.js 的作者尤雨溪进行了一次访谈,了解他对于无后端与全栈方法.以及 Vue.js 适用场景的看法,还有他 ...
- linux下设置账户锁定阈值:登录失败n次,多长时间后解锁重新登录
在centos系统下: 1.执行命令 vim /etc/pam.d/system-auth或vim /etc/pam.d/ login 2.执行命令 vim /etc/pam.d/sshd 3.在上面 ...
- docker 部署 zabbix
docker部署zabbix 我相信大家都已经会再物理机上跑zabbix并且监控了,那么有没有想过在docker中跑zabbix?下面咱们来看看如何在docker中搭建zabbix并且监控 部署环 ...
- python 中简单的输出语句
1 python 中简单的输出语句 #coding:utf-8#输出的是整数,得到的也是整数,用raw_inputusername=raw_input('请输入用户名:')#输出的是整数或者字符串,得 ...
- 刷题[CISCN2019 华北赛区 Day2 Web1]Hack World
解题思路 打开发现是很简单的页面,告诉了表名和列名,只需知道字段即可 尝试一下,输入1,2都有内容,后面无内容.输入1'让他报错,发现返回bool(false) 大概思路就是布尔型注入了,通过不断返回 ...
- sql 注入初探
Sql注入:就是将恶意的sql语句插入到用户输入的参数当中并带入数据库中查询并在浏览器返回不该显示的信息 寻找sql注入点: 1.要有参数值的传递(url当中GET型的.注册用户名的页面.登录框.留言 ...
- @ComponentScan比较
ComponetScan 定义扫描规则 value:指定要扫描的包 excludeFilters=Filter[] 指定扫描的时候按照什么规则排除哪些组件. includeFilters=Filter ...