阅读 150

Jmeter关联详解

Jmeter关联详解

关联的概念

  从上一步操作中获取需要的值,传递给下一步操作中进行引用,形成自动关联,而不是

每次操作都去手动修改关联的值。常见的场景有SessionID、Session Token值的获取。

正则表达式提取器

正则基础

  正则表达式(Regular Expression):使用正则表达式解析响应结果,“()”表示提取字

符串中的部分值,请不要使用“||”,除非你本身需要匹配这个字符。

常用的正则表达式操作符:

操作符

说明

实例

.

匹配除“\r\n”之外的任何单个字符。


[]

字符集,对单个字符给出范围

[abc] 表示非a、b、c,[a-z]表示a-z的单个字符

[^ ]

非字符集,对单个字符给出排除范围

[^abc] 表示非a或b或c的单个字符

*

前一个字符零次或无限次扩展

abc* 表示ab、abc、abcc、abccc等

+

前一个字符1次或无限次扩展

abc+ 表示abc、abcc、abccc等

前一个字符0次或1次扩展

abc? 表示ab、abc

|

左右表达式的任意一个

abc|def 表示abc、def

{m}

扩展前一个字符m次

ab{2}c 表示abbc

{m,n}

扩展前一个字符m到n次 

 ab{1,2}c 表示abc、abbc

^

 匹配字符串开头

^abc 表示abc且在一个字符串的开头 

$

 匹配字符串结尾

abc$ 表示abc且在一个字符串的结尾 

()

分组标记内部只能使用|操作符 

(abc) 表示abc,(abc|def)表示abc、def

\d

数字,等价于0-9


\w

单词字符,等价于[a-z0-9A-Z_]


常用组合:

.*具有贪婪的性质,匹配到不能匹配为止,最大匹配原则。

+或*后跟?表示非贪婪匹配,即尽可能少的匹配,最小匹配原则。

.*? 表示在能匹配成功的前提下尽可能少的匹配,最小匹配原则。

 

Name:组件的名字,可以自定义

Comments:注释

Apply to:一般保持默认选择Main sample only即可

Field to check:要检查的响应字段,比较常用的是Body

Name of created variable:引用名称,即变量名,将获取到的值存储在这个变量中

Regular Expression:正则表达式,根据要抓取的内容编写

Template:模板,$1$表示第一个正则表达式,如果有2个模板,则填入$1$$2$

Match No.(0 for Random):匹配数字(0代表随机),一般填1,表示第一个,0表示随机,-1表示全部

(此时提取结果是一个数组,如果引用名称是user,也可以通过${user_1}的方式来取第1个匹配的内容)

Default Value:缺省值,没匹配到就使用该值,如填入一个Test

实际运用

  工作场景:有两个接口,分别可以获取到城市代码和城市天气,查询城市天气的接口需要将

获取到的城市代码作为参数传入。

查询城市代码接口:http://toy1.weather.com.cn/search?cityname=shanghai

查询城市天气接口:http://www.weather.com.cn/data/cityinfo/101020100.html

  接下来,我们需要使用正则表达式提取器来实现两个接口的关联,先抓取到城市代码存储到

一个变量中,然后在查询城市天气接口中引用该变量。

  在Jmeter中建立http请求,配置好查询城市代码接口,添加查看结果树。

  添加正则表达式提取器,抓取需要的参数。

  添加查询城市天气接口,城市代码引用上一步提取的参数,查看响应结果。

 JSON Path Extractor提取器

基础简介

  对于需要从接口返回为JSON的结果中提取内容,然后作为变量在不同的请求中传递,JSON Path Extractor

提取器可以说是非常好用。对于JSONPath不太熟悉的同学,建议在使用该组件前先去官网学习一下相关内容。

JSONPath官网:https://goessner.net/articles/JsonPath/

先看一下JSONPath语法与其对应的XPath概述和比较。

XPathJSON路径描述
/$根对象/元素
.@当前对象/元素
/或者 []子运算符
..不适用父运算符
//..递归下降。JSONPath 从 E4X 借用了此语法。
**通配符。所有对象/元素,无论其名称。
@不适用属性访问。JSON 结构没有属性。
[][]下标运算符。XPath 使用它来迭代元素集合和谓词在 Javascript 和 JSON 中,它是本机数组运算符。
|[,]XPath 中的联合运算符导致节点集的组合。JSONPath 允许将备用名称或数组索引作为一个集合。
不适用[开始:结束:步骤]从 ES4 借来的数组切片运算符。
[]?()应用过滤器(脚本)表达式。
不适用()脚本表达式,使用底层脚本引擎。
()不适用在 Xpath 中分组

  在jmeter里使用此组件,需要安装对应的JMeterPlugins-ExtrasLibs插件。下载完成,将

jar包放入jmeter安装目录lib\ext中,然后重启jmeter。

链接: https://pan.baidu.com/s/1vh9IL9tgwDsSYl2dShgbsw

提取码: 7kgh

Destination Variable Name:要存储的变量名称

JSONPath Expression:JSON表达式

Default Value:缺省值,未取到结果使用该值

实际运用

1.当返回值为JSON时,JSON表达式为 $.userSession.sessionId 

复制代码

{    "userSession": {        "businessCode": "900000",        "createTime": "2018-05-25 03:24:17",        "userCode": "29feaa3c98014e02bec16c6f448a6459",        "userName": "lip-vpn",        "sessionId": "10a4cee035d044d8b2f25e2cebb2843e"
    }
}

复制代码

在jmeter中添加JSON Path Extractor,然后用结果树查看输出,配置如下:

2.当返回值为数组时,需要加上数组的位置,JSON表达式为 $.userSession[0].sessionId 

复制代码

{    "userSession": [
        {            "businessCode": "900000",            "createTime": "2018-05-25 03:24:17",            "userCode": "29feaa3c98014e02bec16c6f448a6459",            "userName": "lip-vpn",            "sessionId": "10a4cee035d044d8b2f25e2cebb2843e"
        }
    ]
}

复制代码

在jmeter中添加JSON Path Extractor,然后用结果树查看输出,配置如下:

 

作者:Sweettesting —— 半醉半醒半浮生

出处:http://www.cnblogs.com/Sweettesting/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

来源https://www.cnblogs.com/Sweettesting/p/15019439.html

文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐