首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Webtest测试失败中查找真正的错误

在Webtest测试失败中查找真正的错误
EN

Stack Overflow用户
提问于 2012-11-22 12:10:20
回答 2查看 2.3K关注 0票数 22

我正在使用Python和Webtest来测试WSGI应用程序。我发现在处理程序代码中引发的异常往往会被Webtest吞并,然后引发一个泛型:

代码语言:javascript
复制
AppError: Bad response: 500 Internal Server Error

如何告诉它引发或打印导致此错误的原始错误?

EN

回答 2

Stack Overflow用户

发布于 2017-04-06 07:33:56

虽然clj的答案肯定有效,但您可能仍然希望访问测试用例中的响应。为此,您可以在向TestApp发出请求时使用expect_errors=True (从webtest documentation),这样就不会引发AppError。下面是一个我期望出现403错误的示例:

代码语言:javascript
复制
# attempt to access secure page without logging in
response = testapp.get('/secure_page_url', expect_errors=True)

# now you can assert an expected http code, 
# and print the response if the code doesn't match
self.assertEqual(403, response.status_int, msg=str(response))
票数 6
EN

Stack Overflow用户

发布于 2015-06-16 17:10:13

您的WSGI框架和服务器包含捕获异常并执行某些操作的处理程序(在正文中呈现堆栈跟踪,将回溯记录到日志文件中,等等)。默认情况下,Webtest不会显示实际的响应,如果框架在正文中呈现堆栈跟踪,这可能会很有用。当我需要查看响应的正文时,我使用以下Webtest扩展:

代码语言:javascript
复制
class BetterTestApp(webtest.TestApp):

    """A testapp that prints the body when status does not match."""

    def _check_status(self, status, res):
        if status is not None and status != res.status_int:
            raise webtest.AppError(
                "Bad response: %s (not %s)\n%s", res.status, status, res)
        super(BetterTestApp, self)._check_status(status, res)

如何更好地控制异常的发生取决于您使用的框架和服务器。对于内置的wsgiref模块,您可以重写error_output来实现您想要的功能。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13505778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档