红魔方_D

闲来无事不从容,突然想来写内容; 万一内容有问题,请你口下多留情。 —— ——横批《赐教》

导航

Jmeter的正则提取

有了 JSON 提取器为啥还要用正则提取器?

  • JSON 提取器只针对接口返回的响应内容
  • 如果想提取的是响应头、请求头的值,而非响应内容的值呢?
  • 这个时候正则提取器的作用就出来了,它可以提取请求任一部分的

正则提取器界面介绍

 

 

 

字段含义

字段 含义

Names of created variables

(引用名称)

    • 接收提取值的变量名
    • 必传

Regular Expression

(正则表达式)

填写正则表达式

Template(模板)

从找到的匹配项中创建字符串的模板

若模板为:$0$,则为整个表达式匹配到的内容(这里为整个响应报文)
若模板为:$1$,则对应正则表达式中的第一个()所匹配的内容
若模板为:$2$,则对应正则表达式中的第二个()所匹配的内容

依次类推......($1$和$1$指的是正则表达式有多个,如:“正则表达式1”,“正则表达式2”)

Match No.(0 for Random)
(匹配数字)
    • 取第几个值
    • 0:随机,默认
    • -1:所有  (ForEach 控制器,循环将提取到的值赋予到 HTTP 请求中)
    • 1:第一个值
    • 非必传

Default Value

(缺省值)

    • 缺省值,匹配不到值的时候取该值
    • 非必传

Use empty default value

(使用空默认值)

勾选后,提取不到值时,则返回空字符串

Field to check

属性 含义
Body(主体) 响应体,不包括响应头;最常用
Body (unescaped) 响应体,替换了所有HTML转义符;不建议使用
Body as a Document 从不同类型的文件中提取文本;影响性能
Request Headers(信息头) 请求头
Response Headers 响应头
URL URL
Response Code 响应码
Response Message 响应信息

Template

  • 如果一条正则表达式有多个提取结果,则提取结果是数组形式
  • 模板 $1$、$2$.....表示把解析到的第几个值赋给变量,从 1 开始匹配
  • $0$ 表示整个表达式匹配的内容  
  • 若只有一个结果,只能是$1$
  • 知识点1
    $0$ 模板其实返回的就是 uuid2_g0 的值
    返回了整个正则表达式,不只是 ( ) 内匹配到的值
     $1$ 模板其实返回的就是 uuid2_g1 的值
     仅返回 ( ) 内匹配到的值
  • 知识点2
    • 一个 ( ) 匹配到多个值的场景 ,一般会结合 ForEach控制器,可以循环将提取到的值赋予到 HTTP 请求中

 一条表达式有多个( ),且只有一个模板

 

  • 测试结果

1 info2=0564CE592B4CE914365D8922F6FC4CEC
2 info2_g=2
3 info2_g0="uuid":"0564CE592B4CE914365D8922F6FC4CEC","username":"luojunjiess286"
4 info2_g1=0564CE592B4CE914365D8922F6FC4CEC
5 info2_g2=luojunjiess286

知识点
info2 拿的就是 info2_g1 的值
$1$ 获取的是第一个 ( ) 匹配到的值, $2$ 获取的是第二个 ( ) 匹配到的值,以此类推

一条表达式有多个( ),且有两个模板

待续。。。。。。。。。。。。。。。。。。。。。。。。。。。

 

posted on 2023-01-08 23:24  红魔方_D  阅读(79)  评论(0编辑  收藏  举报