Jmeter后置处理器实现过程及方法应用
1.JSONExtractor
Jsonextractor后置处理器用在返回格式为Json的HTTP请求中,用来获取返回的Json中的某个值。并保存成变量供后面的请求进行调用或断言等。
- Variablenames:保存的变量名,后面使用${Variablenames}引用
- JSONPathexpressions:上一步中调试通过的jsonpath表达式
- MatchNumbers:匹配数字(0代表随机,1代表第一个,-1代表所有)
- DefaultValues:找不到时默认值,一般设置为NOTFOUND
- Computeconcatenationvar(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”,使用场景需要获取的值有多个,后面需要对这一组数据进行操作
JsonPathexpression的使用
JsonPath 描述 $ 根节点 @ 当前节点 .or[] 子节点 .. 选择所有符合条件的节点 * 所有节点 [] 迭代器标示,如数组下标 [,] 支持迭代器中做多选 [start:end:step] 数组切片运算符 ?() 支持过滤操作 () 支持表达式计算
示例如下:
2.正则表达式
- 引用名称:自己定义的变量名称,后续请求将要引用到的变量名,如填写的是:JWT,后面的引用方式是${JWT}
- 正则表达式:提取内容的正则表达式,相当于loadrunner中的关联函数
- "()"括起来的部分就是需要提取的,对于你要提的内容需要用小括号括起来
- "."匹配除了换行符以外的任何字符
- "*"(贪婪)重复零次或更多
- 例如"aaaaaaaa"匹配字符串中所有的a正则:"a*"会出到所有的字符"a"
- "+"(懒惰)重复一次或更多次
- 例如"aaaaaaaa"匹配字符串中所有的a正则:"a+"会取到字符中所有的a字符,"a+"与"a*"不同在于"+"至少是一次而"*"可以是0次
- "?"(占有)重复零次或一次
- 例如"aaaaaaaa"匹配字符串中的a正则:"a?"只会匹配一次,也就是结果只是单个字符a
- "*?"重复任意次,但尽可能少重复
- 例如"acbacb"正则"a.*?b"只会取到第一个"acb"原本可以全部取到但加了限定符后,只会匹配尽可能少的字符,而"acbacb"最少字符的结果就是"acb"
- "+?"重复1次或更多次,但尽可能少重复,与"*?"一样,只是至少要重复1次
- 还有分组的情况,常用的就这两种,其它的可以再自行百度
- "(?=exp)"匹配exp前面的位置
- "(?<=exp)"匹配exp后面的位置
模板:用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来的),则可以是$1$,$2$,$3$等等,表示解析到的第几个值给var。例如:$1$表示匹配到的第一个值
匹配数字:0代表随机取值,此时提取结果是一个数组,1表示取出匹配到的第一个值,负数表示提取所有符合条件的值。
- 缺省值:正则匹配失败时,取的值
- 想要知道正则表达式是否正确,可以在请求后加入调试取样器(右键-添加-取样器-调试取样器debugsampler)
- 没有特殊的情况用(.*?)就可以解决所有问题
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。