前言:以往在json串比对的时候,我们都是一对一的忽略顺序比对方式,本次遇到了一个奇怪比对方式(反正我是之前没想到的),看来又得撸码打包了
- 别总以为测试人员就不需要撸码,没听说一句老话么,不会前端的测试不是好的架构师(搞笑的)。好了,bb这么多,就是希望没事提高一下自身水平,还是来看看什么情况。先给大家简单讲一讲之前我们在做接口自动化测试的时候,我们是进行json串的比对,像这样:
//[OLD]
//用例预期结果:
[{
"channel":"AA","value":12},{
"channel":"BB","value":20}]
//接口返回的结果:
[{
"channel":"BB","value":20},{
"channel":"AA","value":12}]
这样的比对很简单,只需要以数组的形式比对就可以了(或者其他方法),以下是我从CSDN里面参考的代码(需要自行导如Gson包)
/**
* 比较两个json字符串是否等价
* (本次用的是gson2.8.5的包,自行下载)
*/
public boolean same(String a, String b) {
if (a == null) {
return b == null;
}
if (a.equals(b)) {
return true;
}
JsonElement aElement = parser.parse(a);
JsonElement bElement = parser.parse(b);
if (gson.toJson(aElement).equals(gson.toJson(bElement))) {
return true;
}
return same(aElement, bElement);
}
private boolean same(JsonElement a, JsonElement b) {
if (a.isJsonObject()