jmeter的关联-正则表达式的应用

时间:2023-03-10 00:40:25
jmeter的关联-正则表达式的应用

  LoadRunnner中的关联为web_reg_save_param,查找左右边界,下次请求的时候会用到上次请求服务器返回的数据,那么我们把符合左右边界的数据保存下来,以便下次请求的时候用到。

  jmeter中的关联为使用正则表达式,把数据保存下来。

  无论哪种形式的关联或者工具的关联,其本质是不变的,变得是不同的工具提供的不同的操作方法。

  Jmeter中的关联

  通过对本地文件的引用来完成关联

  在Test Plan下创建如下线程组、然后在线程组下面创建HTTP Request、View Result Tree、Debug Sampler、Regular Expression Extractor 

  jmeter的关联-正则表达式的应用

  1、HTTP Request的设置:

  jmeter的关联-正则表达式的应用

  Implementation我们一般选择 HttpClient4,协议为:file(因为为本地文件),方法:GET,编码:uft-8

  D盘jmeter.txt文件内容为:

  This is abcdefg34656jshshsjsksjskj。
  sjdlsksknsaknjsnd
  sdnasjmkssj
  jssnsknskjssjsjsssksssjxjkdxjsjxalsxjss
  jskss
  Name="TOME" Value="Jerry"

  2、Regular Expression Extractor的设置:

  jmeter的关联-正则表达式的应用

  其中Apply to是这个正则表达式应用范围:主采样器和子采样器、只应用在主采样器、只应用在子采样器、JMeter变量,我们根据实际需要选择;

  Field to check:检查的区域,Body、Body(unescaped)、Body as a Document、Response Headers(响应头)、Request Headers(请求头)、URL、Response Code、Response Message;

  Reference Name:名字我们可以自定义,但是最好是有意义的,见名知意;

  Regular Expression:根据实际关联的内容,进行正则表达式的关联;

  Template,模板——一般默认为$1$,如果关联的是两个值,可以写成$1$$2$;

  Macth No.1:选择第几次匹配到的值,有可能一个Sampler下面匹配到多个值,这时这个变量就可以用到,0代表随机取,可以用在每次取到的值是一样的情况下,一般我们只  匹配第一次,所以写1,-1代表所有都匹配到。

  Default Value:如果没有匹配到的值为,我们可以自定义,也可以用默认的empty值;

  正则表达式的规则为:

  jmeter的关联-正则表达式的应用

  jmeter的关联-正则表达式的应用

      *:代表任意长度

  3、运行,查看结果树:

  jmeter的关联-正则表达式的应用

  我们可以查看到session、session_g、session_g0、session_g1

  如果文件内容为:

  This is abcdefg34656jshshsjsksjskj。1234。
  sjdlsksknsaknjsnd
  sdnasjmkssj
  jssnsknskjssjsjsssksssjxjkdxjsjxalsxjss
  jskss

  Name="TOME" Value="Jerry"
  那么运行结果为:

  jmeter的关联-正则表达式的应用

  显然不是我们想要的结果,应该是我们的正则表达式的规则不完整导致,更改正则表达式的规则为:jmeter的关联-正则表达式的应用

  (.+?):代表匹配任意多个字符,并且找到匹配的结果之后马上停止查找;

  结果为:

  jmeter的关联-正则表达式的应用

  如果想匹配Name="TOME" Value="Jerry",正则表达式为:

  jmeter的关联-正则表达式的应用

  结果为:

  jmeter的关联-正则表达式的应用

  我们可以看到session为两个连起来的字符串,这个和我们正则表达式的模板是一致的,如果我们模板设为$1$aaa$2$,那么结果为session=TOMEaaaJerry。