zoukankan      html  css  js  c++  java
  • (六)Jmeter系列之---上下文关联

    一、关联

      关联是Jmeter工具中非常重要的一个技术。因为在测试过程过有些数据是经常发生变化的,要获取并使用这些数据,就要使用关联。

    比如:用户登录后,session信息都不同,有些操作要使用session,就需要将这个动态的信息保存下来。 还有经常遇到的场景,第二个请求提交的参数要从第一个请求的返回数据中获取。

    今天我们就来解决:将请求A响应数据的部分内容提取出来,保存成变量供后续请求使用。

    二、目标

    需求:我们这边有一个注册接口、一个登录接口,登录接口中的用户名参数是注册接口注册的用户。

    环境介绍:

    1、注册的用户名、密码参数化,使用用户参数做的参数化,用户名称ruser的参数是通过函数助手__RandomString来生成的,(5个随机数,取值范围0~9,a~z),密码固定不变,方便登录。

     2、因为接口提交的请求格式是application/json,所以请求参数写在消息体数据。

     

    3.通过JSON表达式测试提取name值。

    在查看结果树中,查看注册的响应数据,然后把查看方式改成JSON Path Tester,最后编写JSON表达式测试提取响应数据中的name值。

     通过 $.name 表达式可以提取到响应数据中name的值。

     三、实现上下文关联(JSON提取器)

    1.右击 注册->添加->后置处理器->JSON提取器

     2.配置JSON提取器

    JSON提取器说明:
    1) Name of created variables:变量名称,引用时格式${token}
    2) JSON path expressions:步骤2中获取的表达式
    3) Match No:可以填三个值 (0:随机 1:第一个 -1:全部)(获取到的值有多个时,选择其中的某部分)
    4) compute concatenation var(suffix_ALL): 是否统计所有,即将获取到的所有值都保存(目前用到的不勾选)
    5) default values:默认值

    3.在登录接口中使用JSON提取器中的变量名称进行上下文关联。

    登录接口参数中配置变量。

     4.最后运行,查看注册和登录的name,是一样的,登录响应显示登录成功了。说明我们做的上下文关联成功了。

     

     当然使用JSON提取器只适合于响应数据是json格式的数据,如果不是json格式的数据,我们也可以使用正则表达式进行数据的提取。

     四、实现上下文关联(正则表达式提取器)

    要使用正则表达式提取器,首先得知道什么是正则表达式,请自行查看《正则表达式》

    1.右击 注册->添加->后置处理器->正则表达式提取器

    2.通过正则表达式测试提取name值。

    在查看结果树中,查看注册的响应数据,然后把查看方式改成RegExp Tester,最后编写正则表达式测试提取响应数据中的name值。

     通过 "name":"(.*?)","pwd"表达式可以提取到响应数据中name的值。

    "name":"相当于LR左边界

    (.*?)括号里.*?为正则表达式

    ","pwd"相当于LR右边界

     3.配置正则表达式

    正则表达式提取器说明:
    Apply to:应用范围
    要检查的响应字段:样本数据源。
    引用名称:其他地方引用时的变量名称,我这里写的zzname,可自定义设置,引用方法:${引用名称}
    正则表达式:数据提取器,()括号里为你要获取的的值。 "name":"( 相当于LR左边界 ),","pwd"(相当于LR右边界)。而括号里 .*? 为正则表达式,用来匹配所需要获取的数据
    模板:用于从找到的匹配项创建字符串的模板。这是一个带有特殊元素的任意字符串,用于引用正则表达式中的组。引用组的语法是:' $ 1 $ '引用组1,' $ 2 $ '引用组2,等等。$ 0 $引用整个表达式匹配的内容。
    匹配数字:正则表达式匹配数据的所有结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。-1表示全部,0随机,1第一个,2第二个,以此类推。若只要获取到匹配的第一个值,则填写1
    缺省值:匹配失败时的默认值。可以不写。若需用于后续逻辑判断,可简单写为 ERROR。

    4.在登录接口中使用正则表达式提取器中的变量名称进行上下文关联。

    登录接口参数中配置变量。

     

    5.最后运行,查看注册和登录的name,是一样的,登录响应显示登录成功了。说明我们做的上下文关联成功了。

     

  • 相关阅读:
    you don't have permission to access forbidden
    SQL优化之语句优化
    MySQL索引介绍
    com.jcraft.jsch.JSchException: java.io.FileNotFoundException: file:D:developmentideaProjectssalary-card argetsalary-card-0.0.1-SNAPSHOT.jar!BOOT-INFclasses!keystorelogin_id_rsa 资源未找到
    Java 原生日志 java.util.logging
    为什么volatile不能保证原子性?
    SpringCloud-微服务配置统一管理SpringCloud Config(七)
    SpringCloud-微服务网关ZUUL(六)
    SpringCloud-容错处理Hystrix熔断器(五)
    SpringCloud-声明式Rest调用Feign(四)
  • 原文地址:https://www.cnblogs.com/renshengruxi/p/14492073.html
Copyright © 2011-2022 走看看