业务场景
接口测试白名单列表信息展示,接口需要实时用到变量参数token和userID,需要登录接口来进行获取
操作实现
添加的原件:
- 右键添加线程-->线程组
- 右键线程组-->添加-->取样器-->http请求
- 右键-->添加-->后置处理器-->正则表达式提取器
- 右键-->添加-->监听器-->查看结果树
登录接口:请求登录接口
其返回值展示:
{
"picPrefix": "http://XXXXXXX/",
"resp": {
"errCode": "0000",
"errMsg": "成功",
"permissionList": [
XXXX ],
"roleList": [
{
"projectId": "10005",
"roleId": "2002081123336379643"
}
],
"secret": "2005201653048689336",
"token": "2005201653048689335",
"userBean": {
"createTime": "2020-02-10 13:21:11",
"nickName": "ljt",
"phone": "17812312312",
"projectId": "10005",
"pwd": "202cb962ac59075b964b07152d234b70",
"updateTime": "2020-02-10 13:21:11",
"userId": "200210132110953498"
}
},
"token": "2005201653051849048"
}
正则表达式提取器:
各配置项介绍:
APPly to:作用范围
1、Main sample and sub-samples:作用于主节点的取样器及对应子节点的取样器
2、Main sample only:仅作用于主节点的取样器
3、Sub-samples only:仅作用于子节点的取样器
4、JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称),从指定变量值中提取需要的值。
Field to check:要检查的响应报文的范围
1、主体:响应报文的主体,最常用
2、Body(unescaped):主体,是替换了所有的html转义符的响应主体内容,注意html转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用
3、Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能
4、Response Headers:响应信息头(如果你使用的是中文版的Jmeter,会看到这一项是信息头,这是中文翻译问题,应以英文为准)
5、Request Headers:请求信息头,提取session时可以用到
6、URL:请求url
7、Response Code:响应状态码,比如200、404等
8、Response Message:响应信息
引用名称(Reference Name):
Jmeter变量的名称,存储提取的结果;即下个请求需要引用的值、字段、变量名,后文中引用方法是${引用名称}
正则表达式(Regular Expression):
使用正则表达式解析响应结果,()括号表示提取字符串中的部分值,前后是提取的边界内容。
(.+?)和(.*?)的区别:
(.+?)匹配一个及以上,
(.*?)匹配0个及以上,要取的值是空值的时候可以取到,
例如:"page":"";,取page的值时如果其为空,使用(.+?)是取不到的,需要写"page":"(.*?)"
模板(Template):
正则表达式的提取模式。
如果正则表达式有多个提取结果(一个正则可以同时获取多个数值),则结果是数组形式,模板$1$,$2$等等,表示把解析到的第几个值赋给变量;从1开始匹配,以此类推,$0$标识全文匹配。
若只有一个结果,则只能是$1$;
匹配数字(Match No):
匹配时往往出现匹配结果为多个值的情况,正则表达式匹配数据的结果可以看做一个数组,表示如何取值:0代表随机取值,正数n则表示取第n个值(比如1代表取第一个值),负数则表示提取所有符合条件的值,可以与 For Each Controller 一起用来遍历。
缺省值:
匹配失败时候的默认填写值。
提取token:
请求白名单列表接口:
入参需要token和userID,参数化处理,引用名称为正则表达式设置的引用名称
查看结果树:
PS:获取多个数据
举例:在用户列表的结果中,需要将"projectId": "10005","title": "活动详情",,id、tittle都取出用来进行后续操作
表达式和模板填写内容如下所示
random参数
{
"status": "firing",
"labels": {
"alert_event": "健康度0329_2",
"alert_target": "gdas",
"alertname": "gdas 光驱不健康_2_${__Random(100000,999999,)}",
"origin_prometheus": "云湖-哈尔滨",
"severity": "critical"
}