接口测试-jmeter串联xml数据格式请求
2019-07-03 本文已影响14人
freedom_smile
要求:
- 测试支付及支付检测两个接口
- 支付及检测的接口请求为xml格式
- 支付请求数据要多组不一样的数据
- 每个接口请求有些参数要求全局唯一
- 模拟正常场景,支付一次,检测5次,检测数据为支付的订单
分析如下
- 用 [配置原件 ->CSV Data Set Config]进行多组数据的准备
- 用 [sampler ->SOAP/XML-RPC Request] 请求为xml格式
- 用 [前置处理器 ->BeanShell PreProcessor] 进行唯一值的生成
- 用 [后置处理器 ->正则表达式提取器] 提前支付的返回数据作为支付检测的请求数据
- 用 [逻辑控制器->循环控制器]模拟支付一次检测5次的场景
- 用 [监听器-查看结果树]查看请求返回数据
步骤如下:
-
单击测试计划右键->新建线程组
image.png -
单击线程组右键->参数化数据
image.png
参数化配置数据如下
image.png -
添加前置处理制作请求的唯一数
image.png
代码如下:
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("------------日志结束----------------");
-
添加支付请求
参数化的数据用${参数名}的格式进行编写
image.png
xml数据如下:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<p_request>
<zf_head>
<t_no>${t_no}</t_no>
<c_no>${c_no}</c_no>
<l_no>${l_no}</_no>
<t_req_no>${t_req_no}</t_req_no>
<o_no>${o_no}</o_no>
<version>1.0</version>
<p_channel>11111111</p_channel>
<p_id>${p_id}</p_id>
</zf_head>
<acctNo>${acctNo}</acctNo>
<tranAmt>${__Random(1,999999,tranAmt)}</tranAmt>
<iNo>${iNo}</iNo>
</p_request>
ps:不需要规则的随机数可用jmeter自带的工具自动生成
image.png
添加支付请求后,运行查看日志
image.png
-
添加正则表达式提取器,取支付返回数据给检测接口调用
image.png
-
添加循环控制器设置为5
image.png
-
右键循环控制器添加检测的请求
image.png
xml请求格式如下:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<p_request>
<zf_head>
<t_no>${t_no}</t_no>
<c_no>${c_no}</c_no>
<l_no>${l_no}</_no>
<t_req_no >${t_req_no }</t_req_no>
<o_no>${o_no}</o_no>
<version>1.0</version>
<p_channel>2222222</p_channel>
<p_id>${p_id}</p_id>
</zf_head>
<iNo>${iNo}</iNo>
<oriTranDate></oriTranDate>
</payment_request>
-
添加查看结果树查看接口请求返回参数
image.png
运行看结果
image.png达到测试目的,完毕。