首页 > 解决方案 > Python assertEqal 字符串 - 忽略它的一部分

问题描述

我正在使用 python 3.6.7

在测试中,我使用 assertEqual 来比较字符串对象。这些字符串包含一些时间数据。由于此数据因测试而异,因此我想忽略此数据。可行吗?

例如,这是可比较的对象:

obj1 = '{"field1": "field1", "field2": "field2", "created_at": "2019-06-16T07:12:46.429536Z", "field2": "field3"}'

我想做类似的事情:

obj1 = '{"field1": "field1", "field2": "field2", "created_at": ANY, "field2": "field3"}'
obj2 = '{"field1": "field1", "field2": "field2", "created_at": "2019-06-16T07:12:46.429536Z", "field2": "field3"}'
assertEqual(obj1, obj2)

标签: pythonunit-testing

解决方案


由于字符串是序列化的 json 对象,因此我宁愿比较数据,也不愿比较可能会随机变化和破坏测试的表示。例如:

import json
v1 = json.loads(obj1)
v2 = json.loads(obj2)

del v1['created_at']
del v2['created_at']
assertEqual(v1, v2)

推荐阅读