• Jmeter多接口测试之参数传递


    接口测试包含单接口测试和多接口测试,通过组合多个接口实现一组功能的验证称为多接口测试,单接口重在单个接口多种请求组合的响应断言,多接口重在组合不同接口,实现流程的串联和验证。多接口测试涉及到接口之间参数的传递,比如AB两个接口协同完成一个功能,A接口的响应要作为B接口的输入,此处就需要用到Jmeter的关联功能。本文提供两个接口的串联示例,展示如何应用Jmeter实现多接口的参数传递。

    关联就是把应用中动态变化的数据获取到,将它保存为参数,提供给后面需要用到的地方进行使用,通过关联可以实现多接口之间的参数传递。Jmeter常用两种关联组件:

    • 正则表达式提取器

    • Json Extractor

    接口示例

     接口A:输入用户名,密码创建用户,返回新增用户id

     接口B:输入用户id,用户名,密码等信息实现编辑用户(B接口基于A接口返回的新增用户id实现数据修改)

    正则表达式提取器

    正则表达式提取器是一种后置处理器,它可以通过正则的方式提取请求中的响应数据,Jmeter的正则表达式提取器有如下选项

     引用名称:存储匹配结果的变量名称,可以是一个值也可以是一组值

     正则表达式:匹配的正则表达式,正则表达式里面可以有多个正则

     正则贪婪模式和非贪婪模式匹配:贪婪模式会尽可能多的匹配内容,非贪婪模式会尽可能少的匹配内容,贪婪模式和非贪婪模式的区别是在正则匹配后是否有?

     模板:正则表达式提取器类型,样式为:$n$,模板可自由组合,拼接组成新的字符串内容。

     模板为$0$,则为整个表达式匹配到的内容;

     模板为:$1$,则对应正则表达式中的第一个小括号内()匹配的内容;

     模板为$2$,则对应正则表达式中的第二个小括号()匹配的内容;

     模板为$1$$2$,则把2个()所匹配的内容拼接起来,$1$aa$2$拼接两个变量的内容,并在中间加上aa

     匹配数字:-1代表取全部数据,0代表随机取值,1代表取第1个数据,2代表取第2个数据

     缺省值:找不到匹配时的值

    正则表达式提取实例

    获取接口A的响应报文

    基于Jmeter正则表达式提取器编写如下所示后置处理器,提取出响应报文的id

     通过debugSampler查看变量的提取结果

     在接口B(修改用户)中使用接口A返回(新增用户)的参数

     
    Json提取器

    Json提取器是一种后置处理器,它可以通过解析Json报文的方式提取请求中的响应数据,Jmeter的Json提取器有如下选项

     变量名:存储提取的变量名字

     Json Path Expressions:Json Path 表达式

     Match Numbers: 匹配的数量,0代表随机获取,1代表获取第1个数据,-1代表获取所有数据

     Compute concatenation var (suffix_ALL):是否统计所有,即将匹配到的所有值保存为变量_ALL。

     Default Values: 没有匹配值时的提示信息

    Json Extractor 提取到的值会存储在变量里,使用方法和普通变量一样,通过${}引用Json Extractor 的变量即可。Json Extractor存储的变量名是基于提取器中变量名称扩展的,建议通过添加DebugSampler获取Json Extractor实际存储值的变量名。

    Json提取器实例

    获取接口A的响应报文

    基于Jmeter Json提取器编写如下所示后置处理器,提取出响应报文的id

     

     通过debugSampler查看变量的提取结果

    在接口B(修改用户)中使用接口A返回(新增用户)的参数

     

     通过上述示例可以看到,正则表达式提取器和Json提取器的处理流程是一致的,只是提取方式不同。Jmeter通过添加相应的后置处理器可以解析到请求的返回结果,并且存储为参数供后续接口使用,通过这种方式实现多请求的参数传递,从而实现接口的串联测试。

  • 相关阅读:
    OpenJDK源码研究笔记(十二):JDBC中的元数据,数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMetaDa
    Java实现 LeetCode 257 二叉树的所有路径
    Java实现 LeetCode 257 二叉树的所有路径
    Java实现 LeetCode 257 二叉树的所有路径
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 242 有效的字母异位词
    Java实现 LeetCode 241 为运算表达式设计优先级
    Java实现 LeetCode 241 为运算表达式设计优先级
    Java实现 LeetCode 241 为运算表达式设计优先级
  • 原文地址:https://www.cnblogs.com/duxf100/p/11534084.html
Copyright © 2020-2023  润新知