使用 unittest 通过 API 测试一些边缘情况。所有这些案例都使用自定义异常类返回 400 系列响应代码。不幸的是,我似乎找不到捕获这些自定义异常或读取 unittest 检查本身的响应代码的方法。
我收到的是一个“AppError”异常,其中一条消息提到它是 400 响应而不是 200 或 300。如果可以的话,我想避免解析异常消息。这也需要在 Python 2.6+ 上工作。如何在我的 unittest 检查中捕获自定义异常,或者在不解析异常消息的情况下确定导致错误的响应代码?
使用 unittest 通过 API 测试一些边缘情况。所有这些案例都使用自定义异常类返回 400 系列响应代码。不幸的是,我似乎找不到捕获这些自定义异常或读取 unittest 检查本身的响应代码的方法。
我收到的是一个“AppError”异常,其中一条消息提到它是 400 响应而不是 200 或 300。如果可以的话,我想避免解析异常消息。这也需要在 Python 2.6+ 上工作。如何在我的 unittest 检查中捕获自定义异常,或者在不解析异常消息的情况下确定导致错误的响应代码?
您必须捕获异常并断言它不是 400 响应:
try:
call_api_method()
except AppError as ae:
self.assert(ae.errorcode < 400)
这就要求异常携带错误码作为属性;您可能需要检查异常上可用的属性。默认情况下.args
会在那里(它是一个元组),但是对于此类异常来说,最好也有一个错误代码属性。
我想出了如何做到这一点。事实证明,使用 webtest(我忘了提到它正在使用),您可以传入一个参数expect_errors=True
并保存请求的返回值。然后,您可以使用以下命令检查响应状态
self.assertEqual('400 Bad Request', response.status)