Postman代码转换成beanshell片段

发表于:2022-7-04 09:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:忘记先生忘记了名字    来源:稀土掘金

  开始试验
  声明:JMeter能支持写代码的就是beanshell元件,是的,任何它的元件。
  过程分析
  粉丝说很难的原因是因为没有java代码基础和对jmeter元件的数量使用;如果是关于JMeter不支持的功能,首先想到的就是手写代码带包成插件或者是beanshell编程,题主推荐第一种方式,因为它比较通用些。
  ·postman截图的第一句意思:获取13位时间戳;
  · 第二句以及后面频繁出现的var,它是定义变量的关键字;
  · console.log类似JMeter的log.info()都是日志输出;
  · 对于方法:Math、SHA256等都是方法的引用,如果JMeter不支持就需要手写代码;
  · 巧了,JMeter偏偏提供了对应的功能:函数助手了解一下
  · 后面的那么多set都是设置全局变量。
  # 关于时间函数
  ${__time(yyyy-mm-dd hh:mm:ss,)} 
  ${__time(yyyy-mm-dd,)}
  # 13位时间戳
  ${__time(,)}
  # 10位时间戳
  ${__time(/1000,)}  
  # 规则字符串
  ${__UUID}
  # 加密算法,它支持MD5、SHA-256;具体参见JMETER功能函数助手介绍
  ${__digest(SHA-256,string,,true,)}
  测试计划实现
  通过JMeter创建测试计划来实践,思路:由beanshell前置处理器代码处理参数,然后赋值给HTTP sampler,也可以在下一个接口请求直接使用;
  ·beanshell前置处理接口入参
  ·入参使用函数引用加密的参数
  · 测试函数功能
  · 校验测试结果
  代码片段
  // 时间戳字符串
  String?timeStamp?=?"${__time(,)}";
  // 控制台输出
  log.info(timeStamp);
  // 定义或者获取token,或获取变量
  String?token?=?"aslfjlajlskfslf";
  String?key?=?"123456";
  // 赋值,在下一个请求:${key}引用
  vars.put("key","value_abc");
  // 这里关于随机字符串的算法,可能需要自己定义;Jmeter提供了uuid;结构与你的案例符合
  String?randStr?=?"${__UUID}";
  String?sigStr?= timeStamp + token + key + timeStamp;
  vars.put("sigStr",sigStr);
  // 签名算法,在jmeter支持md5,sha256可能需要自己写好;恰恰又有函数支持;如果在同一个脚本中可能有问题,但是在外面作为入参或者引用是没问题的
  // String signature = "${__digest(SHA-256,vars.get("sigStr"),,true,)}";
  // log.info(signature);
  小结
  经过上面的试验,postman的代码过程都在JMeter实现了,所以对于JMeter工具的使用必须要掌握,在不能满足功能需求的时候,才考虑二次开发,就如加密算法,如果不支持就手写。在上面的引用中,如{__digest()}函数,对于需要加密的字符串时是活的,每次请求都会发生改变,所以如何让它能动态获取才是关键,建议了解:{__V()}、{__eval()}、{__beanshell()}等函数的用途。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号