原标题:接口测试之Jmeter串联xml数据格式请求
要求
1.测试支付及支付检测两个接口
2.支付及检测的接口请求为xml格式
3.支付请求数据要多组不一样的数据
4.每个接口请求有些参数要求全局唯一
5.模拟正常场景,支付一次,检测5次,检测数据为支付的订单
分析如下
用 [配置原件 ->CSV Data Set Config]进行多组数据的准备
用 [sampler ->SOAP/XML-RPC Request] 请求为xml格式
用 [前置处理器 ->BeanShell PreProcessor] 进行唯一值的生成
用 [后置处理器 ->正则表达式提取器] 提前支付的返回数据作为支付检测的请求数据
用 [逻辑控制器->循环控制器]模拟支付一次检测5次的场景
用 [监听器-查看结果树]查看请求返回数据
步骤如下
单击测试计划右键->新建线程组
单击线程组右键->参数化数据
参数化配置数据如下
添加前置处理制作请求的唯一数
代码如下:
import java.sql.Date;
import java.text.SimpleDateFormat;
Long timeStamp = System.currentTimeMillis; //获取当前时间戳
SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss"); //定义时间格式
String timeNow = sdf.format(new Date(timeStamp)); // 时间戳转换成定义好的时间格式
//(数据类型)(最小值+Math.random*(最大值-最小值+1))
//从1到9999的int型随机数
String t_no = "tn" +timeNow + (int)(1+Math.random*(99999-1+1));
String l_no = "ln" +timeNow + (int)(1+Math.random*(99999-1+1));
String t_req_no = "trn" +timeNow + (int)(1+Math.random*(99999-1+1));
String o_no = "otn" +timeNow + (int)(1+Math.random*(9999-1+1));
String iNo ="in" + timeNow + (int)(1+Math.random*(9999-1+1));
//vars.get("name"); 从jmeter中获得变量值
//数据存到jmeter变量中
vars.put("t_no ",t_no );
vars.put("l_no ",l_no );
vars.put("t_req_no ",t_req_no );
vars.put("o_no ",o_no );
vars.put("iNo ",iNo );
log.info("------------日志开始----------------");
log.info("iNo is:"+ iNo);
log.info("------------日志结束----------------");
添加支付请求
参数化的数据用${参数名}的格式进行编写
xml数据如下:
${t_no}
${c_no}
${l_no}
${t_req_no}
${o_no}
1.0
${p_id}
${acctNo}
${iNo}
ps:不需要规则的随机数可用jmeter自带的工具自动生成
添加支付请求后,运行查看日志
添加正则表达式提取器,取支付返回数据给检测接口调用
添加循环控制器设置为5
右键循环控制器添加检测的请求
xml请求格式如下:
${t_no}
${c_no}
${l_no}
${t_req_no }
${o_no}
1.0
${p_id}
${iNo}
添加查看结果树查看接口请求返回参数
运行看结果
达到测试目的,完毕。
责任编辑: