我正在尝试找到更好的方法来检查字典的值。
我做了一个pytest测试,其中我向API发送了一个带有一些有效负载的请求,响应看起来像这样:
{'user': '1', 'objects': [{'id': '1', 'event': [{'type': 'something', 'timestamp': '1522991335319'}]}], 'reached': True}
用户、id、类型 и 达到的键值应该与我在请求中发送的值相同,我不关心时间戳键的值。
当我直接断言时,它不是很方便,例如,键"类型"的断言看起来并不紧凑:
assert response["objects"][0]["event"][0]["type"] == "something"
那么,检查值并使代码更紧凑的更好方法是什么?
如果这是测试套件中的一种测试,那么我会按照这些思路做一些事情:
obj = response['objects'][0]
event = obj['event'][0]
assert reponse['user'] == '1'
assert response['reached'] is True
assert obj['id'] == '1'
assert event['type'] == 'something'
但是,如果您有很多这样的测试,我建议将响应 JSON 映射到一个对象中,并为该对象定义eq方法以仅考虑相关属性,以便您可以使用 == 运算符使用 assert 比较对象