Skip to content

Latest commit

 

History

History
61 lines (31 loc) · 1.92 KB

9-23--如果接口返回的数据做了加密处理的,如何进行断言-.md

File metadata and controls

61 lines (31 loc) · 1.92 KB

9-23--如果接口返回的数据做了加密处理的,如何进行断言-

这里可以采用 Beanshell断言

1、首先得让开发写一个解密的jar包,然后把jar包放入到 JMeter的 JMeter的lib/ext目录下

2、然后在测试计划中有一个 add Directory or jar to classpath在这里指定jar的路径添加需要的jar包

3、在 JMeter中添加 Beanshell断言,里面实现java代码,具体过程就是

a.导入解密的jar包中的解密算法类

b.导入用于解释json格式数据的类(假设返回的数据是json格式的)

c.对数据进行处理器,首先获取接口的返回数据,然后调用解密算法类中的函数进行解密,解密出来后就是一个json格式数据

d.然后调用json库中的函数对json数据进行解释,提取其中需要断言的字段,判断与预期结果是否一致就可以了

具体代码:

1、在http请求-→>添加-→>断言-→>bean shell断言

//导入jar包的 EncryptAndDecryptinterface类

import com changfu EncryptAnd DecryptInterface;

//导入jar包用于解释json格式数据的类

import org.json.JSONObject;

//对数据进行处理器

String json_res= prev.getResponse DataAsString();/取上个响应信息

String resb= EncryptAndDecryptlnterface.getDecrypt(json_res);∥调用解密工具解密

vars.put("resb",resb);

log.info("解密后的响应信息json="+resb);

JSONObject resbonseJson= new JSONObject(resb); //解析 json

String status_str= resbonseJson.get("status") toString();//截取status字段值

vars.put("status_str",status_str);

log.info("执行状态="+ status_str);

String result="0";

vars.put("result_str",result);

if(!status_str.equals(result))

{ //响应信息的状态值 status_str不等于0,则断言其他与实际值不一致

Failure=true;

FailureMessage="statuscode与实际值不一致;

实际值为:"+status_str+",响应信息:"+resb;}