在日常接口测试中,总会遇到获取token值的情况,比如通过登录接口返回的token,使用此token作为凭据访问系统里面的其它接口,这时我们就需要获取到登录接口返回的值,把token信息提取出来,然后保存起来给别的请求使用,或者做一些其它处理。
下面的这个例子讲解,如何通过正则表达式的方法获取参数值,首先需要先了解下相关语法,之后在进行实践。下示例中,要求提取登录接口的token、userid、username、unixtime等信息,介绍用正则表达式的方式来实现,提取一个,一次提取多个。
一、正则表达式语法
()括起来的部分就是要提取的
匹配任何字符串
+ 一次或多次
? 在找到第一个匹配项后停止
例如想匹配web页面的如下部分,<title> 正则表达式例子</title> 提取语法:<title> (+)</title>
使用场景:第二个请求参数中需要加入第一个请求的返回值时;通过正则提取器可以提取第一个请求返回值中指定的字段信息并赋值在第二个接口里面。
小技巧,想要看到变量,取样器—Debug Sampler 调试器,会把变量打印出来。
二、实践例子
第一步:例如有以下登录接口,在第一个接口成功之后,需要提取token、userid等参数
第二步:在需要提取数据的接口 右击 --》添加 --》后置处理器 --》正则表达式提取器
第三步:用正则提取:响应结果种单个字段值,设置变量名,设置左右边界(+)表示匹配任意长度
第四步:查看正则表达式,提取的相关变量值
setUp Thread Group
在setUp Thread Group中使用__setProperty函数设置jmeter属性值(此值为全局变量值),将所需变量值如${token}设置为jmeter属性值,即newtoken,示例:
1、添加--后置处理器 -- 正则表达式
2、使用正则表达式获取第一个线程组得到的响应信息 例如:token
3、添加--后置处理器 -- BeanShell PostProcessor
4、 BeanShell PostProcessor ,内容如下:
Parameters: ${token}
Script:
String token = bshargs[0];
print (token);
${__setProperty(newtoken,${token},)}
5、再添加一个线程组 2
可以使用P函数进行对jmeterproperties的变量调用,
因此,在线程组2中使用_p函数来调用jmeter属性,获取属性值,从而实现跨线程组,参数值传递。
6、直接使用 ${__P(newtoken,)} , 即可获取token的值
6、参数设置使用用户参数,还是csv参数
用户参数和csv参数都可以使用,当并发用户比较多,且每个用户使用不同的参数时,使用CSV参数,方便编辑。
前置处理器-用户参数
配置软件-CSV Data Set Config
参数使用(格式为${参数名称})
7、参数有时间参数需要传当前时间,如何处理?
使用jmeter自带的__time,通过函数助手生成{__time(,)},参数值即为${__time(,)}
8、提交参数值随机生成函数
随机生成0-9的函数:${__Random(0,9,random_num_0_9)}
根据范围随机生成整数:${__Random(startNum,endNum,)}
注:startNum 开始数 ,endNum结束数,范围是闭区间 [startNum,endNum]
1在测试计划下面添加>
以上就是关于Jmeter正则表达式获取多个参数实践全部的内容,包括:Jmeter正则表达式获取多个参数实践、Jmeter性能测试常见问题集(2)、jmeter实现登录并设置token为全局变量等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)