前言
测试同学在写测试用例的时候,每个测试用例必须包含预期结果。而对于手工测试而言,执行测试时,预期结果基本上都是人工完成。而对于自动化用例的执行,就要借助于自动化断言,一般是借助于程序实现。以接口测试而言,测试人员往往需要在接口返回的Json串中定位到自己要做断言的value。如果你的自动化测试框架是基于Java语言开发,那么你必然有Java对象与JSON相互转换的经历,如果接口返回的结果多层嵌套,转换起来更是头疼。 本文就是作者将工作中经常使用的fastjson在断言中的一些用法进行总结分享,能帮助大家节省写自动化用例的时间。介绍
fastjson是阿里的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。 当然,Java处理JSON数据有三个比较流行的类库FastJSON、Gson和Jackson,以下是三者的性能对比情况。来源:https://blog.csdn.net/accountwcx/article/details/50252657 最终选择fastjson主要是其速度快、使用广泛、功能完备且使用比较简单等因素,当然其国产开源软件因素也是之一。使用方法
1. 官网下载jar包。
https://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.53/fastjson-1.2.53.jar2. pom.xml文件引入maven依赖
com.alibabafastjsonx.x.x
常用方法
// 把字符串parse为JSONObject或者JSONArray
public static final Object parse(String text);
// 把字符串parse成JSONObject
public static final JSONObject parseObject(String text);
// 把字符串parse为JavaBean
public static final T parseObject(String text, Class clazz);
// 把字符串parse成JSONArray
public static final JSONArray parseArray(String text);
// 把字符串parse成JavaBean集合
public static final List parseArray(String text, Class clazz);
// 将JavaBean序列化为字符串
public static final String toJSONString(Object object);
// 将JavaBean序列化为带格式的字符串
public static final String toJSONString(Object object, boolean prettyFormat);
// 将JavaBean转换为JSONObject或者JSONArray。
public static final Object toJSON(Object javaObject);
// 将日期格式化转换为字符串
public static final String toJSONStringWithDateFormat(Object object,String datefo
实践
定义一个student类:
package JsonDemo;
import lombok.Data;
@Data
public class Student {
Student(){}
Student(String name, Integer age, String phone){
this.name = name;
this.age = age;
this.phone = phone;
}
public String name;
public Integer age;
public String phone;
}
Java对象->Json对象
// 创建一个对象
Student student = new Student("软件质量保障", 30, "18888888888");
// Java对象转JSON对象
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(student);
System.out.println("Java对象转化为JSON对象\n" + jsonObject);
控制台输出
Java对象转化为JSON对象
{"name":"软件质量保障","phone":"18888888888","age":30}
Java对象->Json字符串
// 创建一个对象
Student student = new Student("软件质量保障", 30, "18888888888");
// Java对象转换成JSON字符串
String stuString = JSONObject.toJSONString(student);
System.out.println("Java对象转换成JSON字符串\n" + stuString);
控制台输出
Java对象转换成JSON字符串
{"age":30,"name":"软件质量保障","phone":"18888888888"}
JSON对象->JSON字符串
// 创建一个对象
Student student = new Student("软件质量保障", 30, "18888888888");
// 先转成JSON对象
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(student);
// JSON对象转换为JSON字符串
String jsonString = jsonObject.toJSONString();
System.out.println("JSON对象转换为JSON字符串\n" + jsonString);
控制台输出:
JSON对象转换为JSON字符串
{"name":"软件质量保障","phone":"18888888888","age":30}
JSON对象->Java对象
// 创建一个对象
Student student = new Student("软件质量保障", 30, "18888888888");
//先转成JSON对象
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(student);
//JSON对象转换成Java对象
Student studentObject = JSONObject.toJavaObject(jsonObject, Student.class);
System.out.println("JSON对象转换成Java对象\n" + studentObject);
控制台输出:
JSON对象转换成Java对象
Student(name=软件质量保障, age=30, phone=18888888888)
JSON字符串->JSON对象
String stuString = "{\"age\":2,\"name\":\"软件质量保障\",\"phone\":\"18888888888\"}";
// JSON字符串转换成JSON对象
JSONObject jsonObject1 = JSONObject.parseObject(stuString);
System.out.println("JSON字符串转换成JSON对象\n" + jsonObject1);
// JSON字符串转换成JSON对象
JSONOb
ject jsonObject1 = JSONObject.parseObject(stuString);
System.out.println("JSON字符串转换成JSON对象\n" + jsonObject1);
// JSON字符串转换成JSON对象
JSONOb
j
ect jsonObject1 = JSONObject.parseObject(stuString);
System.out.println("JSON字符串转换成JSON对象\n" + jsonObject1);
控制台输出:
JSON字符串转换成JSON对象
{"phone":"18888888888","name":"软件质量保障","age":2}
JSON字符串->Java对象
String stuString = "{\"age\":2,\"name\":\"软件质量保障\",\"phone\":\"18888888888\"}";
//JSON字符串转换成Java对象
Student student1 = JSONObject.parseObject(stuString, Student.class);
System.out.println("JSON字符串转换成Java对象\n" + student1);
控制台输出:
JSON字符串转换成Java对象
Student(name=软件质量保障, age=2, phone=18888888888)
复杂JSON字符串->JSONObject
String str = "{\"status\":\"success\", \"result\":{\"data\": {\"students\": [{\"age\":2,\"name\":\"软件质量保障\",\"phone\":\"18888888888\"}]}}}";
JSONObject jsonObject = JSON.parseObject(str);
JSONObject data = jsonObject.getJSONObject("result");
JSONObject result = data.getJSONObject("data");
String students = result.getString("students");
System.out.println(students);
控制台输出:
[{"phone":"18888888888","name":"软件质量保障","age":2}]