如何在 Python 单元测试中获取和断言以及 REST API?

Posted

技术标签:

【中文标题】如何在 Python 单元测试中获取和断言以及 REST API?【英文标题】:How to fetch and assert and REST API in Python Unittests? 【发布时间】:2019-03-26 10:45:16 【问题描述】:

在尝试获取和断言 REST API 时,抛出“TypeError”。以下是我正在运行的代码

def test_get_action(self): action_id = self._get_action_id() """获取操作,成功,响应状态为 200""" resp = self.test_client.get_action(action_id) self.assertEqual(resp.response['status'], '200') self.assertEqual(resp.values()[0][0]['action_id'], action_id)

我看到错误为“TypeError:'dict_values'对象不支持索引”

进一步调查: * 在 Python 2.7 中运行此测试并看到上述错误 * 我对代码进行了不同的更改,如下所示,但无法导出。

self.assertListEqual(resp.values()[0][0]['action_id'], action_id) 自我。 assertSequenceEqual(resp.values()[0][0]['action_id'], action_id)

我是 Python 和单元测试的新手,请帮忙。

提前致谢。

【问题讨论】:

【参考方案1】:

错误消息表明resp.values() 正在返回dict_values 对象而不是列表。

尝试将对resp.values() 的调用封装在对list() 的调用中:

self.assertEqual(list(resp.values())[0][0]['action_id'], action_id)

【讨论】:

以上是关于如何在 Python 单元测试中获取和断言以及 REST API?的主要内容,如果未能解决你的问题,请参考以下文章

浅谈软件单元测试中的“断言” (assert) -- 从石器时代进步到黄金时代

C# 单元测试 - JSON 上的断言

在 MS C# 单元测试中,如何断言发生了 ArgumentException?

python单元测试框架-unittest之断言

Java 单元测试获取目标日志内容进行断言的推荐姿势

断言后如何获取异常对象?