2013-03-18 50 views
0

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

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

回答

0

我想出了如何做到这一点。结果发现,在webtest(我忘记提及使用)时,可以传入参数expect_errors=True并保存请求的返回值。然后,您可以检查对响应状态与

self.assertEqual('400 Bad Request', response.status) 
1

你必须捕获异常,并声称它不是一个400响应:

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

这就要求异常进行错误代码为属性;您可能需要检查异常上可用的属性。默认情况下,.args将会在那里(它是一个元组),但是对于这样的例外来说,也有一个错误代码属性的好习惯。

+0

我会看看 - 感谢:d – paradox870 2013-03-18 17:33:11

+0

不幸的是,错误并没有出现有任何有用的属性。我确实设法弄清楚了如何做到这一点。 – paradox870 2013-03-18 18:04:00

+0

@ paradox870:很抱歉听到这个;如果异常没有提供比字符串消息更多的东西,则没有办法,只能解析它。否则,我希望能得到一些帮助。 – 2013-03-18 18:07:14