jmeter 对接口的响应值进行base64解码

此次我的例子包含了A接口的值做B接口的参数。

commons-codec-1.11.jar 包下载地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi

在做base64解密之前需要去下载 commons-codec-1.11.jar ,下载完成后,把jar放在C:apache-jmeter-4.0libext 目录下

在测试计划页面添加JAR.点击浏览,选择刚刚下载的jar

1.在A采集器中右键-->后置处理器-->正则表达式提取器

引用名称:可以看作是变量名称,在B接口中引用使用 ${resp_str} 的方式

正则表达式:提取内容的表达式,提取需要的值,相当于resp_str变量的值

()  括起来的部分就是需要提取的,对于你要提的内容需要用小括号括起来

.  点号表示匹配任何字符串

+  一次或多次

?  在找到第一个匹配项后停止

模板:表示使用提取到的第几个值,此处有多少值与上面匹配的值有关,如上面正则表达式中有2个提取值,此处写$2$就是提取第二个

$-1$:表示取所有值

$0$:表示随机取值

$1$:表示取第1个

$2$:表示取第二个

以此类推:$n$:表示取第n个

匹配数字 :

0 代表随机取值

1 代表取第一个值

-1 代表全部取值

缺省值:如果正则表达式没有搜找到值,则使用此缺省值。

2.在A采集器右键-->后置处理器-->BeanShell PostProcessor

3.添加B http采集器。在BODY里面添加A采集器中响应值 resp_str

4.给B 采集器也添加正则表达式提取器和BeanShell PostProcessor

同样把B采集器中的响应值提取到,在BeanShell PostProcessor中对响应值进行base64解码

代码为:

import java.io.*;
import org.apache.commons.codec;

String resp_data =vars.get("resp_str");
log.info("加密后获取的响应值------->>"+resp_data);

log.info("------------开始解密-------------------");
org.apache.commons.codec.binary.Base64 base64=new org.apache.commons.codec.binary.Base64();
String s=new String(base64.decode(resp_data));
log.info("解密后的值------->>"+s);
log.info("------------解密结束-------------------");

附、Bean Shell常用内置变量

log:写入信息到jmeber.log文件,使用方法:log.info(“hello world !”);
ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext。
vars - (JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:
                  a) vars.get(String key):从jmeter中获得变量值
                  b) vars.put(String key,String value):数据存到jmeter变量中
props - (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。 
                  a) props.get("START.HMS");  注:START.HMS为属性名,在文件jmeter.properties中定义 
                  b) props.put("PROP1","1234"); 
prev - (SampleResult):获取前面的sample返回的信息,常用方法:
                  a) getResponseDataAsString():获取响应信息
                  b) getResponseCode() :获取响应code
sampler - (Sampler):gives access to the current sampler
更多方法可参考:org.apache.jmeter.samplers.SampleResult

原文地址:https://www.cnblogs.com/wangjunjiehome/p/14437508.html