使用unittest通过API测试一些边缘情况。所有这些情况都使用自定义异常类返回400系列响应代码。不幸的是,我似乎无法找到一种方法来捕获这些自定义异常或在unittest检查中读取响应代码。
我收到的是一个'AppError'异常,其中一条消息提到它是400响应而不是200或300.我想避免解析异常消息,如果可以的话。这也需要在Python 2.6+上运行。如何在我的unittest检查中捕获自定义异常,或者在不解析异常消息的情况下确定导致错误的响应代码?
答案 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)