zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Java随笔
    Java随笔
    Java随笔
    CF920E Connected Components?(并查集)
    CF1227F1 Wrong Answer on test 233 (Easy Version)(dp)
    Nginx上传文件限制
    Nginx代理---请求头
    Django中Model操作(数据库表名修改/列名修改/数据筛选过滤)
    Django中创建数据库报错:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=utf8' at line 1解决方案
    如何实现加入收藏、设为首页、保存到桌面的方法功能
  • 原文地址:https://www.cnblogs.com/wangjunjiehome/p/14437508.html
Copyright © 2011-2022 走看看