0

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

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

4

2 回答 2

1

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

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

这就要求异常携带错误码作为属性;您可能需要检查异常上可用的属性。默认情况下.args会在那里(它是一个元组),但是对于此类异常来说,最好也有一个错误代码属性。

于 2013-03-18T17:25:12.117 回答
1

我想出了如何做到这一点。事实证明,使用 webtest(我忘了提到它正在使用),您可以传入一个参数expect_errors=True并保存请求的返回值。然后,您可以使用以下命令检查响应状态

self.assertEqual('400 Bad Request', response.status)
于 2013-03-18T18:11:32.210 回答