使用Python 2.6 unittest捕获响应代码

时间:2013-03-18 17:13:27

标签: python unit-testing

使用unittest通过API测试一些边缘情况。所有这些情况都使用自定义异常类返回400系列响应代码。不幸的是,我似乎无法找到一种方法来捕获这些自定义异常或在unittest检查中读取响应代码。

我收到的是一个'AppError'异常,其中一条消息提到它是400响应而不是200或300.我想避免解析异常消息,如果可以的话。这也需要在Python 2.6+上运行。如何在我的unittest检查中捕获自定义异常,或者在不解析异常消息的情况下确定导致错误的响应代码?

2 个答案:

答案 0 :(得分:1)

你必须捕获异常并断言它不是400响应:

try:
    call_api_method()
except AppError as ae:
    self.assert(ae.errorcode < 400)

这需要异常来携带错误代码作为属性;您可能需要检查异常上可用的属性。默认情况下.args将存在(它是一个元组),但这样的异常也是一个好的做法,也有错误代码属性。

答案 1 :(得分:1)

我想出了如何做到这一点。事实证明,使用webtest(我忘了提及使用它),您可以传入参数expect_errors=True并保存请求的返回值。然后,您可以使用

检查响应状态
self.assertEqual('400 Bad Request', response.status)