admin管理员组文章数量:1639831
目的:记录下jmeter调用js文件,方便日后查看
描述:对于一些前台的通过JS加密,如RSA加密,base64加密,可以通过直接调用js中方法完成接口测试
步骤:
1.整理js文件到jmeter的bin目录下,js文件要求:不要包含<script></script>,只需要有变量的声明、方法的实现即可。
2.新建一个JSSR233 PreProcessor,选择javascript语言
3.好了之后即可跑脚本了。
关键区域脚本:
(1)加密查询参数
//加载js文件
load("fdi_base64.js");
var sfzh = "${sfzh}";
var qry = "5,137,237|" + sfzh + "";
qry = encode64(qry);
//log.info("qry=" + qry);
vars.put("qry",qry);
vars.put("sfzh",sfzh);
(2)解密结果(因为返回的结果是加密的,所有需要解密)
//加载js文件
load("fdi_base64.js");
var rsp = prev.getResponseDataAsString();//获取服务器响应结果
//log.info("rsp=" + rsp);
var result = decode64(rsp);
//log.info("result=" + result);
vars.put("result",result);
(3)重置接口响应结果(美化)
String decodeResult = vars.get("result");
//解决编码问题
public static String uRLDecoderString(String str) {
String result = "";
if (null == str) {
return "";
}
try {
result = java.URLDecoder.decode(str, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}
decodeResult = uRLDecoderString(decodeResult);
//log.info("解码后:" + decodeResult);
prev.setDataEncoding("utf-8");
prev.setResponseData(decodeResult.toString());
vars.put("decodeResult",decodeResult);
(4)校验结果:
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
String decodeResult = vars.get("decodeResult");
/**
* 判定返回对象是否是一个json对象,需要在jmeter的lib/ext下引入jar包
*/
JSONArray jsonArray = null;
public static boolean isJson(String str){
try{
JSONArray jsonArray= JSONArray.fromObject(str);
return true;
}catch(Exception e){
return false;
}
}
//public int getHuiYuanNum(){
// JSONObject jsonObject = jsonArray.getJSONObject(0);
// String errorCode = jsonObject.getString("Error");
// if(errorCode.equals("1")){
//
// }else if(errorCode.equals("2")){
// }
//}
if(!isJson(decodeResult)){
Failure = true;
FailureMessage = "接口响应结果:" + decodeResult + ",不是一个json数组,失败的身份证号是:"+ vars.get("sfzh");
//文件写到本地
FileWriter fw = null;
BufferedWriter bf = null;
try {
fw = new FileWriter(new File("d:\\failedSFZH.txt"), true);//失败的身份证号写入文件
bf = new BufferedWriter(fw);
bf.write(vars.get("sfzh") + "\n");
bf.flush();
} catch (Exception e) {
try {
bf.flush();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
bf.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}else{
Failure = false;
ResponseMessage = decodeResult;
}
版权声明:本文标题:jmeter调用js文件,完成接口测试(base64加密) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1729295923a1194717.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论