我正试图找到检查字典值的更好方法。
我做了一个pytest测试,在其中我向API发送了一个带有一些负载的请求,响应看起来像这样:
{'user': '1', 'objects': [{'id': '1', 'event': [{'type': 'something', 'timestamp': '1522991335319'}]}], 'reached': True}
到达的键值user,id,typeи应该与我在请求中发送的值相同,而且我不关心timestamp键的值。
当我直接断言时,它不是很方便,例如,键“type”的断言看起来不紧凑:
assert response["objects"][0]["event"][0]["type"] == "something"
那么,检查值并使代码更紧凑的更好方法是什么?
答案 0 :(得分:0)
如果这是测试套件中的一种测试,那么我会按照以下方式做一些事情:
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