在进行接口压测时,要求请求参数自动获取当前时间,与其他参数按一定规则拼接后进行MD5加密,加密数据有效期30分钟的设计,意味着要获取当前时间、进行字符串拼接、进行MD5加密后再传参。如果进行人工替换,测试人员的工作量会非常繁琐,而借助于python脚本实现,则可以有效提升测试效率。
1.编写python脚本:
1.1实现获取当前时间-time(参数之一)
1.2进行字符串拼接-str(含time,所以要保持数据的一致性)
1.3对str进行MD5加密
1.4将要传给JMeter的参数打印出来。
脚本实现起来非常简单,直接代码:
1.5测试脚本执行结果:下图中的打印的信息即JMeter预期要获取的参数信息
2.通过JMeter的OS Process Sampler读取批处理文件(..\..\getMD5.bat),该批处理文件非常简单,就是执行前面的python脚本。备注:尝试了在JMeter线程组中添加JSR223 Sampler方式,无法达到预期效果(这种方法大家尝试后,如果好用,欢迎在评论区留言分享或讨论)
3.添加正则表达式,提取要参数,此处需要提取两个参数,当前时间-time,按规则生成的MD5值-MD5Code(也可以在一个正则表达式中提取)
4.在请求中设置参数化,读取python脚本中自动生成的参数;
5.验证结果,JMeter可以正常读取python生成的参数,JMeter的扩展性非常好,测试时可以根据需要编写python脚本或jar包进行辅助测试。