前言:
日常工作中对借口进行测试时候,有时候会对一个接口进行版本迭代;
可能对同一个功能来说,老版本使用老接口,新版本就是用新接口;
对单一接口进行接口测试来说是没有什么可说的了,我们可以使用assert对结果数据进行断言,
但是我们并不清楚新老接口使用相同的入参,返回的结果是否有差异,毕竟后面的业务可能对返回字段的取值逻辑可能相同页可能不同!我们能做的就是新接口可以兼容老接口。
这就需要我们想办法怎么对新老接口的返回数据进行比对(入参相同),并且将有差异的地方进行输出,方便我们统计和处理!
使用json模块就可以达到我们目前的目的:
直接上代码:
首先先给定两个已知的,待对比的内容:
compare_json_data.py
class TestDiffJson(): def test_old_data(self): _old_data = { "key1": "value1", "key2": "value2", "key3": [1], "object": { "object_key1": "object_value2", "object_key2": { "sub_key": "object_key2_sub_value", "sub_key3": {"xx": 1}, "sub_key4": {"xx": 1} }, "object_key3": [ {"list_sub_key1": "xx"}, {"list_sub_key2": "xx"} ] }, "x": 1.2 } return _old_data def test_new_data(self): _new_data = { "key1": "value1", "key2": "value2", "key3": (1,), "object": { "object_key1": "object_value1", "object_key2": { "sub_key": "object_key2_sub_value", "sub_key2": {"xx": 1}, "sub_key3": "test" }, "object_key3": [ {"list_sub_key1": "xx"}, {"list_sub_key2": []} ] }, "x": 1.2 } return _new_data
本来只做了差别对比并输出,后面想想如果可以忽略掉一些字段比对的差异,就更完美了,毕竟有些数据时刻变化(比如时间戳)我们是不需要去关注。
<