正则表达式提取器
1.添加正则表达式提取器
右击http请求 > 添加 > 后置处理器 > 正则表达式提取器
2.页面功能介绍
apply to(适用于或者作用范围)
Main sample and sub-samples:作用于主节点的取样器及对应子节点的取样器
Main sample only:仅当前父取样器
Sub-samples only:仅子取样器
JMeter Variable Name to use:作用于jmeter变量,从指定变量值中提取需要的值。
Field to check( 要检查的响应字段)
主体:响应报文的主体,最常用
Body(unescaped):主体,是替换了所有的html转义符的响应主体内容,注意html 转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用
Body as a Document:从不同类型的文件中提取文本(这个选项比较耗性能)
Response Headers:响应信息头
Request Headers:请求信息头
URL:请求url
Response Code:响应状态码,比如200、301、404、500等
Response Message:响应信息
Name of created variable(引用名称):
正则表达式提取结果后赋值的变量名,供后面的接口调用,使用${变量名}来调用。
Regular Expression(正则表达式):
提取数据的正则表达式,需要提取的部分用()括起来。
Template(模板):
用$$引用起来,如果在正则表达式中有多个取值正则表达式,则可以
是
1
1
1等等;匹配的模板匹配到第几个获取的值赋给我们定义的引用名称。
Match No. (0 for Random)(匹配数字(0代表随机)):
0代表随机取值,1代表去取所提取的值里面的第一个值。
Default Value:(缺省值):
如果参数没有匹配到对应的值,可以自行指定返回值(比如:null),默认返回空白。
3.正则表达式
在写正则表达式之前必须先了解它的一些匹配的字符
实例:
比如有一个接口返回的结果为: ‘’’{“msg”: “操作成功!”, “code”: 0, “userId”: “d78a090fef454047afe31c6ec00001”}’’’
我们想匹配这个json串中的userId后面的值d78a090fef454047afe31c6ec00001,我们可以这样写:“userId”: “(.*?)”}
重点是要找到被提取内容前面和后面的都是唯一的边界值,这样才能准确的提取到我们想要提取的内容。
再以获取省份接口和获取指定省份下城市接口为例。假设我们获取城市接口中的省份的参数数据从获取省份接口中提取,看看我们怎么实现:
获取省份接口:get http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportProvince
获取城市接口:get
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity?byProvinceName=城市名称
获取省份接口返回结果:
正则表达式提取器提取:(获取到所有省份并随机提取一个数据)
结果:
在获取城市接口中引用提取的结果province, 通过${province}引用
结果: