MeterSphere接口请求及响应内容中的脚本处理

MeterSphere在做接口测试过程中,某些请求内容及响应内容需要特殊处理,才能达到期望的测试结果,而这些处理需要通过灵活性更强的脚本进行,所以本文针对部分情况,利用脚本进行对应的处理以达到目的。

一、响应内容

1.1 请求响应结果时Unicode编码转为中文

当响应内容为Unicode时,在MeterSphere上显示的内容为乱码,此时就需要通过后置脚本将响应内容转化为UTF-8,以便于正常显示:

在对应接口下添加一个后置脚本,粘贴如下代码即可:

String s=new String(prev.getResponseData(),"UTF-8");
        char aChar;
        int len= s.length();
        StringBuffer outBuffer=new StringBuffer(len);
        for(int x =0; x <len;){
            aChar= s.charAt(x++);
            if(aChar=='\\'){
                aChar= s.charAt(x++);
                if(aChar=='u'){
                    int value =0;
                    for(int i=0;i<4;i++){
                        aChar= s.charAt(x++);
                        switch(aChar){
                            case'0':
                            case'1':
                            case'2':
                            case'3':
                            case'4':
                            case'5':
                            case'6':
                            case'7':
                            case'8':
                            case'9':
                                value=(value <<4)+aChar-'0';
                                break;
                            case'a':
                            case'b':
                            case'c':
                            case'd':
                            case'e':
                            case'f':
                                value=(value <<4)+10+aChar-'a';
                                break;
                            case'A':
                            case'B':
                            case'C':
                            case'D':
                            case'E':
                            case'F':
                                value=(value <<4)+10+aChar-'A';
                                break;
                            default:
                                throw new IllegalArgumentException(
                                        "Malformed   \\uxxxx  encoding.");}}
                    outBuffer.append((char) value);}else{
                    if(aChar=='t')
                        aChar='\t';
                    else if(aChar=='r')
                    aChar='\r';
                    else if(aChar=='n')
                    aChar='\n';
                    else if(aChar=='f')
                    aChar='\f';
                    outBuffer.append(aChar);}}else
                outBuffer.append(aChar);}
prev.setResponseData(outBuffer.toString());
String s=new String(prev.getResponseData(),"UTF-8");

1.2 针对接口响应内容为文件时,MeterSphere显示为乱码的文件内容

此种方式对于测试人员不太友好,所以可以通过后置脚本将响应的文件内容写入实际的文件到服务器,然后从服务器上的目录下进行拿取(或者写入可访问的文件服务器)

import java.io.*;

byte[] result = prev.getResponseData();
String file_name = "/opt/metersphere/data/xxxx.xxx";
File file = new File(file_name);
FileOutputStream out = new FileOutputStream(file);
out.write(result);
out.close();

二、请求内容

2.1 如何添加或者修改请求头信息内容?

针对某些接口请求头需要进行逻辑性的参数添加及修改,常规的函数或者变量无法达到要求,此时可以通过前置脚本进行处理,具体如下:

import org.apache.jmeter.protocol.http.control.HeaderManager;
import org.apache.jmeter.protocol.http.control.Header;

// 获得请求头信息
HeaderManager headers = sampler.getHeaderManager();
// 打印全部请求头信息
log.info("添加前" + headers.getHeaders().getStringValue());
// new一个Header对象
myHeader = new Header("x-parse-session-token", "123456432");
// 添加Header到请求头管理器
headers.add(myHeader);
// 打印全部请求头信息
log.info("添加后" + headers.getHeaders().getStringValue());

2.2 获取请求中的域名或者host信息

某些场景需要通过前置脚本针对不同的域名或者请求host进行逻辑处理,就需要通过如下脚本获取信息

import org.apache.jmeter.config.Arguments;
import java.util.Map.Entry;
 
Arguments args = sampler.getArguments();
//获取域名或者host信息
log.info("domain: "+sampler.getDomain());
//获取请求参数
Map map = args.getArgumentsAsMap();
Iterator itor = map.entrySet().iterator();
while(itor.hasNext()){
  Entry entry = (Entry) itor.next();
  log.info("==========key:"+entry.getKey());  
}

待持续补充。。。。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值