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

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值