DeepDiff的用处:
Deep Difference of dictionaries, iterables, strings and other objects. It will recursively look for all the changes.
DeepDiff 的初衷是用来找出不同数据的差别,在使用了一下之后,如果可以直接使用作为测试的 assertion,感觉效果应该是不错的.
val = dict()
val['test'] = "value"
val['key'] = {"sub_key": "sub_value"}
result = to_json(val)
expected = """{"key": {"sub_key1": "sub_value"}, "test": "value"}"""
result = DeepDiff(result, expected, view='tree')
print(result)
print(result.to_json())
result 差异的结果是:
{"values_changed": {"root": {"new_value": "{\"key\": {\"sub_key1\": \"sub_value\"}, \"test\": \"value\"}", "old_value": "{\"key\": {\"sub_key\": \"sub_value\"}, \"test\": \"value\"}"}}}
然后实际上根据这个返回的 json 获取所有的差别.
在实际 assertion 的时候,有时对象顺序不一样,但是实际情况两个值还是一样的,所以可以在比较的时候加入 ignore order 或者 ignore string case(忽略大小写):
result = DeepDiff(result, expected, view='tree',ignore_order=True,ignore_string_case=True)
使用 DeepDiff 的好处是:
这个仓库个人感觉可以继续再深挖,应该可以在测试过程中有更好的使用.