测试基础 记录 jmeter 实现 java 请求消息体 proto 格式

烂柯人 · 2022年02月10日 · 1460 次阅读

一、要求
已知 YunMsg.proto、url,使用 java Sample 完成请求

二、由 proto 得到 java 文件
可参考以下几个链接
1)https://blog.csdn.net/liyazhen2011/article/details/86707398
2)https://blog.csdn.net/weixin_44000871/article/details/88532787?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164333530916781685364485%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164333530916781685364485&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-88532787.first_rank_v2_pc_rank_v29&utm_term=proto%E7%94%9F%E6%88%90java%E6%96%87%E4%BB%B6&spm=1018.2226.3001.4187
3)https://blog.csdn.net/wzl19870309/article/details/100700241?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164333660016780271527832%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164333660016780271527832&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-100700241.first_rank_v2_pc_rank_v29&utm_term=idea%E4%B8%AD%E5%B0%86proto%E6%96%87%E4%BB%B6%E5%A4%84%E7%90%86%E7%9A%84java&spm=1018.2226.3001.4187

三、新建 maven 工程,获取 jar 包
1、新建 maven 工程,新建类继承 AbstractJavaSamplerClient 类此处具体可以参考百度
2、难点在于如何使用 proto 生成的 java 类处理入参数据,最终生成满足要求的格式,由于保密,截图不全可以参考第一张图片
JSONObject jsonObject = JSONObject.parseObject(input); //将入参的 String 类型转为 json 处理,方便取数据导入(com.alibaba.fastjson.JSONObject)
com.protobuf.YunMsg.RequestMsg.Builder builder= com.protobuf.YunMsg.RequestMsg.newBuilder();
builder.setInput(input1).setMth(mth).setLang(lang).setFzy(fzy).setContext(context).setNum(num);
com.protobuf.YunMsg.RequestMsg requestMsg=builder.build();
byte[] requestMsg1 = requestMsg.toByteArray();
sr.sampleStart();
byte[] ss =CloudPYencry.sendPostProto(url,requestMsg1);
String result=com.protobuf.YunMsg.ResponseMsg.parseFrom(ss).getResultsList().get(0).getHanzi();
String response=com.protobuf.YunMsg.ResponseMsg.parseFrom(ss).toString();
// 通过下面的操作就可以将被测方法的响应输出到 Jmeter 的察看结果树中的响应数据里面了。
//sr.setResponseData("结果是:"+response, "utf-8");
sr.setResponseData("首个汉字是:"+result, "utf-8");
sr.setSuccessful(true);
四、上述代码调试完成以后,打包生成 jar 包
注意避坑:生成的 jar 包导入到 lib\ext 下后 jmeter 无法正常打开,处理方法如下

新建一个目录,将生成 jar 包复制到该目录,配置 jmeter.properties 文件
plugin_dependency_paths=../dependencies;
参考链接打 jar 包https://blog.csdn.net/qq_15347449/article/details/107227506
注意一个工程下打出的 jar 包名称相同,包下所有的方法都可以使用

下图是实现结果

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册