java接口自动化测试实战003----fastjson处理传入参数为JSON格式数据
一、fastjson概述
1、概述
fastjson是阿里爸爸开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。
2、常用API
fastjson API 入口类是com.alibaba.fastjson.JSON
,常用的序列化操作都可以在JSON
类上的静态方法直接完成。
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。
注:
- JSONArray : 相当于List
- JSONObject: 相当于Map<String,Object>
二、json.parse实现解析表格中的json格式参数
1、实现思想
将要传入的参数以Json形式存储在表格中,通过json.parse解析表格中的Json数据,并存储到map集合中,调用doPost 或者doGet方法时,直接调用存储Json数据的map集合就可以。
2、实现步骤
(1)将要传入的参数以Json形式存储在表格中,并放到项目src/test/resouce目录下,其中表格格式如下图所示:
(2)在maven的配置文件pom.xml配置FastJson依赖,如下所示:
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>
(3)编写函数,通过FastJson解析表格中的Json数据,并存储到map集合中,并在doPost 或者doGet方法调用map集合,如下所示:
public class login_v6 { //调用ExcelUtil_3,使用JSONObject.parse处理传入数据格式为Json形式,需要将ExcelUtil_3中的表格名称换成Sheet2 @Test(dataProvider="datas") public void login(String parameters) { String url="http://127.0.0.1:58088/api/user/smsCodeLogin"; JSONObject.parse(parameters); //将json格式的数据转化为map Map<String,String> parameter= (Map<String,String>) JSON.parse(parameters); //循环输出map集合中的数据 Set<String> pa=parameter.keySet(); for (String pas : pa) { System.out.println(pas+" "+parameter.get(pas)); } //调用post方法,以map结合形式传入参数 HttpUtil1.doPost(url,parameter); } @DataProvider public Object[][] datas(){ String excelPath="src/test/resources/测试用例_V1.xlsx"; int rowNum[]= {1,2,3,4,5,6,7}; int cellNum[]= {5}; Object[][] datas= ExcelUtil_3.getDatas(excelPath,"Sheet2",rowNum,cellNum); return datas; } }
三、json.parseObject实现解析表格中的json格式参数
1、实现思想
将要传入的参数以Json形式存储在表格中,通过json.parseObject将表格中的Json数据转化为java对象,从对象中取出参数数据并存储到map集合中,调用doPost 或者doGet方法时,直接调用map集合就可以。
2、实现代码
(1)新建loginParameter类,存储登录数据,如下所示:
public class LoginParameter { String Mobile; String smsCode; public String getMobile() { return Mobile; } public void setMobile(String mobile) { Mobile = mobile; } public String getSmsCode() { return smsCode; } public void setSmsCode(String smsCode) { this.smsCode = smsCode; } }
(2)通过json.parseObject将表格中的Json数据转化为java对象,从对象中取出参数数据并存储到map集合中,如下所示:
public class login_v7 { //调用ExcelUtil_3,使用JSONObject.parseObject处理传入数据格式为Json形式,需要将ExcelUtil_3中的表格名称换成Sheet2 @Test(dataProvider="datas") public void login(String parameters) { String url="http://127.0.0.1:58088/api/user/smsCodeLogin"; Map<String,String> parameter=new HashMap<String,String> (); //将json格式数据转换为java对象 LoginParameter loginPara = JSON.parseObject(parameters, LoginParameter.class); //从java对象中取出参数数据====手机号和密码 String mobile = loginPara.getMobile().toString(); String smsCode = loginPara.getSmsCode().toString(); //将取出的参数数据添加到map集合中 parameter.put("mobile",mobile); parameter.put("smsCode",smsCode); //遍历map集合,判断参数数据是否已经添加到map中 Set<String> pa=parameter.keySet(); for (String pas : pa) { System.out.println(pas+" "+parameter.get(pas)); } //输出响应数据 System.out.println(HttpUtil2.doPost(url,parameter)); } @DataProvider public Object[][] datas(){ String excelPath="src/test/resources/测试用例_V1.xlsx"; int rowNum[]= {1,2,3,4,5,6,7}; int cellNum[]= {5}; Object[][] datas= ExcelUtil_3.getDatas(excelPath,"Sheet2",rowNum,cellNum); return datas; } }
四、总结
- fastjson概述
- json.parse解析json格式数据:使用(Map<String,String>) JSON.parse(parameters)将json格式数据强制转化为map集合形式
- json.parseObject解析json格式数据:使用 JSON.parseObject(parameters, LoginParameter.class);将json格式的数据转化为java对象,再从java对象中取出参数数据,添加到map集合。