案例脚本实现:选择商品加入购物车
客户端发送一个登录的HTTP请求,服务端返回一个带着token的响应,后续发出一个带token信息的加入购物车的HTTP请求,返回响应。
关联:当请求直接由依赖关系的时候,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。
当有关联关系的俩个请求在同一个线程组中时,可以使用下面三种提取器的变量来实现数据传递。
但是如果在不同的线程组里面,不可用,这时候就用到Jmeter属性。JSON提取器+Jmeter或者其他另外两种提取器+Jmeter属性。
Jmeter中常用的关联方法:
---正则表达式提取器
---XPath提取器
---JSON提取器
正则表达式提取器:
正则表达式:
就是一个公式,或者说是一套规则,使用这套规则可以从任意字符串中提取出想要的数据内容。
. : 通配符,可以代表任意字符(除换行回车)。
* : 代表前面的字符出现0次或者多次。
.* : 找到左边界值,往右查找右边界,找到最后面的有边界,中间的所以数据都被记录下来。
左边界(.* ?)右边界:可以提取出想要获取的数据内容。
? : 代表非贪婪匹配,找到左边界之后,往右查找匹配的右边界,只要右匹配的右边界就停止继续查找;再次重新查找左右边界。
案例:原始文本如下,要求是匹配出城市号,地区号,个人号码三组。
021-1234-1234
022-1234-1235
正则表达式结果:(.*?)-(.*?)-(.*?)\n
通过一个正则表达式可以提取出多组数据,每组数据设置对应的左右边界。
正则表达式提取器:
作用:针对任意格式的响应数据进行提取
位置:测试计划---》线程组---》HTTP请求---》右键添加后置处理器---》正则表达式提取器
引用名称:存放提取出的值的参数名称,供下一个请求引用,如填写title,则可以用${title}引用它。
正则表达式:():括起来的部分就是要提取的
. : 匹配任何字符串
+ : 一次或者多次
? :不要太贪了,在找到第一个匹配项后停止。
模版:表示我们要找到正则表达式的第几组值,用$$引用起来,如果在正则表达式中有多个提取值,则可以用$2$,表示解析到第几组值给title,如:$1$表示解析到的第1组值。
匹配数字:代表我们提取出来的那一组值,是让他返回那些数据。0代表随机取值,-1代表全部取值,1代表取第一个值。
缺省值:如果参数没有取得到值,那默认给一个值让他取。
XPath提取器
作用:针对HTML格式的响应结果数据进行提取
位置:测试计划---》线程组---》HTTP请求---》右键添加后置处理器---》XPath提取器
Use Tidy:当需要处理的页面是HTML格式时,必须选中该项。当需要处理的页面 的ML或者是XHTML时,取消选中。
引用名称:存放提取出的值的名称
XPath Query:用于提取值的XPath表达式。//表示。如果提取网页的tltle值,则//title。
匹配数字:如果XPath路径查询出许多结果。则可以选择提取哪个。0表示随机,-1表示提取所有结果,1表示第1个值
缺省值:参数的默认值
JSON提取器
作用:针对JSON格式的响应结果数据进行提取。
位置:测试计划---》线程组---》HTTP请求---》右键添加后置处理器---》JSON提取器
Name of created variables:存放提取出的值的参数名称。
JSON Path Expression :JSON路径表达式
Match to :如果JSON路径匹配出许多结果,则可以选择提取哪个。0:表示随机,-1表示提取所有结果,1表示第一个结果。
Default Values:参数的默认值。
案例:提前某个城市的天气,返回城市名称,在传递给百度。
Jmeter属性
_setProperty函数:将值保存成Jmeter属性。借助BeanShell取样器来执行。
_property函数:在其他线程组中使用此函数读取属性
步骤:添加线程组1;添加HTTP请求-天气;添加JSON提取器;添加BeanShell取样器(将JSON提取器提取的值保存为JMeter属性);添加线程组2,添加百度HTTP请求(读取JMeter属性);查看结果树。
注意:因为是两个线程组串行执行,别忘了勾选测试计划中的独立运行。