【发布时间】:2017-10-05 04:31:56
【问题描述】:
我正在编写一个查询trello board API 的单元测试,并希望断言特定卡存在。
第一次尝试是使用/1/boards/[board_id]/listsrewuest,结果如下:
[{'cards': [
{'id': 'id1', 'name': 'item1'},
{'id': 'id2', 'name': 'item2'},
{'id': 'id3', 'name': 'item3'},
{'id': 'id4', 'name': 'item4'},
{'id': 'id5', 'name': 'item5'},
{'id': 'id6', 'name': 'item6'}],
'id': 'id7',
'name': 'ABC'},
{'cards': [], 'id': 'id8', 'name': 'DEF'},
{'cards': [], 'id': 'id9', 'name': 'GHI'}]
我想断言 'item6' 确实在上述列表中。加载 json 并使用 assertTrue,如下所示:
element = [item for item in json_data if item['name'] == "item6"]
self.assertTrue(element)
但我收到一个错误:'TypeError: JSON 对象必须是 str、bytes 或 bytearray,而不是 'list'。
然后使用/1/boards/[board_id]/cards 请求发现提供了一个简单的卡片列表:
[
{'id': 'id1', 'name': 'item1'},
{'id': 'id2', 'name': 'item2'},
...
]
我应该如何编写这个 unittest 断言?
【问题讨论】:
-
my_list 已经是 Python 列表,不需要 json.loads()。 Json.loads() 仅适用于 JSON 序列化字符串。试试:
element = [item for item in my_list[0]['items'] if item['name'] == "item6"]
标签: json python-3.x python-unittest trello