Jmeter之关联

一、什么时候需要关联

  1、服务器返回中存在动态变化的值,一般是类似session的无规则数据

  2、后面的操作或请求需要用到前面的请求返回的值

  3、脚本运行之后没有报错,也没有产生什么数据

  Jmeter可以通过“后置处理器”中的“正则表达式提取器”来处理关联

二、如何查找关联

  1、Hidden标签

  2、不规则的一段数字或数字与字母的组合

  3、问开发人员哪些地方是需要动态捕捉数据的

三、简单的关联

比如在访问百度首页时响应数据里面有一个title标签

<title>百度一下,你就知道</title>, 我想在其他的请求中引用这个title

添加正则表达式提取器并设置如下:

说明:

  (1)引用名称:下一个请求要引用的参数名称,如填写title,则可用${myref}引用它

  (2)正则表达式:

      括号扩起来的部分是要提取的

      “.”:点代表匹配任何字符

      “*”:星号代表匹配的字符0个或者多个

      “+”:加号代表匹配的字符1个或者多个

      “?”:问号代表找到第一个就不再找了

      问号(?)放在星号(*)和加号(+)后面代表匹配尽可能少的字符

      例如:<src="test.jpg" width="60px" height="80px"/>

        正则src=".*"和src=".+"会匹配整个字符串

        正则src=".*?"和src=".+?"匹配src="test.jpg"

        *+没有这样的用法,除非是匹配星号本身,即: *+ 表示一个或多个星号

  (3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值

  (4)匹配数字:0代表随机取值,-1代表全部取值

  (5)缺省值:如果正则表达式没有匹配到值,则给它一个默认值

添加一个关联请求来验证这个关联:

执行后我们看到关联成功了

四、正则表达式举例

1、提取单个字符串

  匹配Web页面的如下部分:name = "file" value = "readme.txt">,并提取readme.txt

  正则表达式:name = "file" value = "(.+?)">

2、提取多个字符串

  匹配Web页面的如下部分:name = "file.name" value = "readme.txt">,并提取file.name和readme.txt

  正则表达式:name = "(.+?)" value = "(.+?)",这样就会创建2个组,分别用于$1$和$2$

  比如:

  

  如下变量的值将会被设定:

    MYREF:    file.namereadme.txt
    MYREF_g0:   name = "file.name"value = "readme.txt"     模板{0}
    MYREF_g1:   file.name                                                   模板{1}
    MYREF_g2:   readme.txt                                                 模板{2}

  事实上,MYREF_g0、MYREF_g1、MYREF_g2是正则表达式的结果组,而MYREF才是被模板控制提取出来结果,在需要引用地方可以通过:${MYREF_g1}, ${MYREF_g2进行使用。

原文地址:https://www.cnblogs.com/L-Test/p/9426325.html