JMeter中的关联-正则表达式提取(1)
运用Jmeter正则提取器,可以从请求的响应结果中取到需要的内容,从而实现关联。
要关联这个
user_id":"10145"
说明:
简单介绍一下Jmeter正则表达式提取器的使用方法。
1、添加Jmeter正则表达式提取器
在具体的Request下添加Jmeter正则表达式提取器(Jmeter正则表达式在“后置处理器”下面)
2、Jmeter正则表达式提取器控制面板,截图如下:
位置1:名称及注释
位置2:正则表达式提取内容的范围。(关于各字段的详细说明请查阅协议的相关说明)
位置3:正则表达式提取的相关设置
- 引用名称:自己定义的变量名称,后续请求将要引用到的变量名,如填写的是:user_id,后面的引用方式是${user_id}
- 正则表达式:提取内容的正则表达式,相当于lr中的关联函数
- 【() 括起来的部分就是需要提取的,对于你要提的内容需要用小括号括起来】
- 【. 点号表示匹配任何字符串】
- 【+ 一次或多次】
- 【? 在找到第一个匹配项后停止】
- 模板:用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$2$,$3$等等,表示解析到的第几个值给user_id。例如:$1$表示匹配到的第一个值
- 匹配数字:0代表随机取值,-1代表所有值,此时提取结果是一个数组,其余正整数代表第几个匹配的内容提取出来。如果匹配数字选择的是-1,还可以通过${user_id_1}的方式来取第1个匹配的内容,${user_id_2}来取第2个匹配的内容。
- 缺省值:正则匹配失败时,取的值
转自(http://www.cnblogs.com/qmfsun/p/5903318.html)
JMeter获取正则表达式中的提取的所有关联值的解决方法:
需求如下:
{
: "error_no":"0",
: "results":
: [
: : {
: : : "total_earnings":"",
: : : "num_page":"5",
: : : "retrace_rate_thirty":"0.0061",
: : : "day_yield_rankings":"",
: : : "choose_success_rate":"0",
: : : "state":"",
: : : "week_yield_rankings":"",
: : : "month_yield_rankings":"",
: : : "act_id":"",
: : : "last_week_yield_rankings":"",
: : : "name":"lol",
: : : "total_yield":"0.0532",
: : : "total_rows":"277",
: : : "user_id":"10150",
: : : "day_earnings":"",
: : : "face_image":"/userImage/10150.jpg",
: : : "month_earnings":"",
: : : "week_earnings":"",
: : : "apply_state":"1",
: : : "total_page":"56",
: : : "account_id":"204",
: : : "turnover_thirty_rate":"0.0941",
: : : "strongHold":"平安银行",
: : : "month_yield":"-0.0048",
: : : "total_yield_rankings":"1",
: : : "account_name":"",
: : : "week_yield":"0.0013",
: : : "cur_page":"1",
: : : "face_image_small":"/userImage/small/10150.jpg",
: : : "day_yield":"-0.0001"
: : },
: : {
: : : "total_earnings":"",
: : : "num_page":"5",
: : : "retrace_rate_thirty":"0.0099",
: : : "day_yield_rankings":"",
: : : "choose_success_rate":"0",
: : : "state":"",
: : : "week_yield_rankings":"",
: : : "month_yield_rankings":"",
: : : "act_id":"",
: : : "last_week_yield_rankings":"",
: : : "name":"冒牌司令",
: : : "total_yield":"0.0409",
: : : "total_rows":"277",
: : : "user_id":"10262",
: : : "day_earnings":"",
: : : "face_image":"/userImage/10262.jpg",
: : : "month_earnings":"",
: : : "week_earnings":"",
: : : "apply_state":"1",
: : : "total_page":"56",
: : : "account_id":"671",
: : : "turnover_thirty_rate":"0.9981",
: : : "strongHold":"双汇发展",
: : : "month_yield":"0.0409",
: : : "total_yield_rankings":"2",
: : : "account_name":"",
: : : "week_yield":"0.0341",
: : : "cur_page":"1",
: : : "face_image_small":"/userImage/small/10262.jpg",
: : : "day_yield":"0.0008"
: : },
: : {
: : : "total_earnings":"",
: : : "num_page":"5",
: : : "retrace_rate_thirty":"0.0009",
: : : "day_yield_rankings":"",
: : : "choose_success_rate":"1",
: : : "state":"",
: : : "week_yield_rankings":"",
: : : "month_yield_rankings":"",
: : : "act_id":"",
: : : "last_week_yield_rankings":"",
: : : "name":"888",
: : : "total_yield":"0.0359",
: : : "total_rows":"277",
: : : "user_id":"10130",
: : : "day_earnings":"",
: : : "face_image":"/userImage/10130.jpg",
: : : "month_earnings":"",
: : : "week_earnings":"",
: : : "apply_state":"1",
: : : "total_page":"56",
: : : "account_id":"38",
: : : "turnover_thirty_rate":"0.1873",
: : : "strongHold":"平安银行",
: : : "month_yield":"0.0048",
: : : "total_yield_rankings":"3",
: : : "account_name":"",
: : : "week_yield":"0.0004",
: : : "cur_page":"1",
: : : "face_image_small":"/userImage/small/10130.jpg",
: : : "day_yield":"-0.0001"
: : },
: : {
: : : "total_earnings":"",
: : : "num_page":"5",
: : : "retrace_rate_thirty":"0.0027",
: : : "day_yield_rankings":"",
: : : "choose_success_rate":"0",
: : : "state":"",
: : : "week_yield_rankings":"",
: : : "month_yield_rankings":"",
: : : "act_id":"",
: : : "last_week_yield_rankings":"",
: : : "name":"13131313132",
: : : "total_yield":"0.0152",
: : : "total_rows":"277",
: : : "user_id":"10133",
: : : "day_earnings":"",
: : : "face_image":"",
: : : "month_earnings":"",
: : : "week_earnings":"",
: : : "apply_state":"1",
: : : "total_page":"56",
: : : "account_id":"55",
: : : "turnover_thirty_rate":"0.03",
: : : "strongHold":"江苏吴中",
: : : "month_yield":"0.0152",
: : : "total_yield_rankings":"4",
: : : "account_name":"",
: : : "week_yield":"0.0002",
: : : "cur_page":"1",
: : : "face_image_small":"",
: : : "day_yield":"-0.0002"
: : },
: : {
: : : "total_earnings":"",
: : : "num_page":"5",
: : : "retrace_rate_thirty":"0.0047",
: : : "day_yield_rankings":"",
: : : "choose_success_rate":"0",
: : : "state":"",
: : : "week_yield_rankings":"",
: : : "month_yield_rankings":"",
: : : "act_id":"",
: : : "last_week_yield_rankings":"",
: : : "name":"谁主沉浮",
: : : "total_yield":"0.0129",
: : : "total_rows":"277",
: : : "user_id":"10256",
: : : "day_earnings":"",
: : : "face_image":"/userImage/10256.jpg",
: : : "month_earnings":"",
: : : "week_earnings":"",
: : : "apply_state":"1",
: : : "total_page":"56",
: : : "account_id":"648",
: : : "turnover_thirty_rate":"0.493",
: : : "strongHold":"安洁科技",
: : : "month_yield":"0.0129",
: : : "total_yield_rankings":"5",
: : : "account_name":"",
: : : "week_yield":"-0.0076",
: : : "cur_page":"1",
: : : "face_image_small":"/userImage/small/10256.jpg",
: : : "day_yield":"-0.0054"
: : }
: ],
: "dsName":
: [
: : "results"
: ],
: "error_info":""
}
现在需要将
name":"lol
name":"冒牌司令
name":"888
name":"13131313132
name":"谁主沉浮
name字段的值获取,并输出所有的值
通过查看结果树,是看不到name的所有取值
通过添加后置处理器Debug PostProcessor查看提取的所有结果
可以发现,JMeter的正则表达式提取关联值和lr一样,对于有多个符合结果的,会将所有的结果值保存在一个数组里
既然现在看到提取结果是一个数组,那现在怎么将所有的结果拿出来使用呢?
通过逻辑控制器-ForEach控制器进行数组的循环操作,逐一打印出所有的关联值


浙公网安备 33010602011771号