Unit testing 模拟服务器错误

Unit testing 模拟服务器错误,unit-testing,google-app-engine,webtest,Unit Testing,Google App Engine,Webtest,我使用应用程序引擎运行我的应用程序,并想测试它将如何处理服务器错误。 是否有可能通过模拟错误500?当webapp收到未捕获的异常时,500错误正是返回给客户端的。这不是一个特定的失败-只是当一些意想不到的错误发生时,它向用户显示了什么。相反,您应该对处理程序进行单元测试,以确保它们按预期运行。当您的Web应用程序收到未捕获的异常时,500错误正是返回给客户端的错误。这不是一个特定的失败-只是当一些意想不到的错误发生时,它向用户显示了什么。相反,您应该对处理程序进行单元测试,以确保它们按预期运行

我使用应用程序引擎运行我的应用程序,并想测试它将如何处理服务器错误。
是否有可能通过模拟错误500?

当webapp收到未捕获的异常时,500错误正是返回给客户端的。这不是一个特定的失败-只是当一些意想不到的错误发生时,它向用户显示了什么。相反,您应该对处理程序进行单元测试,以确保它们按预期运行。

当您的Web应用程序收到未捕获的异常时,500错误正是返回给客户端的错误。这不是一个特定的失败-只是当一些意想不到的错误发生时,它向用户显示了什么。相反,您应该对处理程序进行单元测试,以确保它们按预期运行。

我使用了一个try-except循环来解决这个问题

try:
    self.testapp.get('/')
    self.assertEqual(1, 2, 'GET request should have resulted in a 405 error') # Purposely fail
except webtest.app.AppError:
    pass
另一种方法是:

self.assertEqual("500 Internal Server Error", self.testapp.post('/', params={}, expect_errors=True).status, 'POST Request should have resulted in a 500 error')

这两种方法仍然会导致出现回溯,但是测试通过了

我使用了一个try-except循环绕过了它

try:
    self.testapp.get('/')
    self.assertEqual(1, 2, 'GET request should have resulted in a 405 error') # Purposely fail
except webtest.app.AppError:
    pass
另一种方法是:

self.assertEqual("500 Internal Server Error", self.testapp.post('/', params={}, expect_errors=True).status, 'POST Request should have resulted in a 500 error')

这两种方法仍然会导致出现回溯,但测试通过

Yes。出于这个原因,我想在get方法调用时模拟服务器错误,并测试如何处理错误。例如,我需要一个进入get方法的入口点来传递其中的异常,或者我需要在测试之前预先定义TestApp的行为。@starter您必须更清楚地了解要测试的内容。“服务器错误”就是当应用程序收到未捕获的异常时返回的结果。你想测试你的应用程序如何处理未捕获的异常吗?它如何处理在特定位置引发的特定异常?是的。我想测试它如何处理在特定位置抛出的特定异常,以及我的应用程序如何处理未捕获的异常。@starter那么你根本不是在测试500-你在测试你的应用程序的行为,并且应用标准的测试实践。也许我不明白什么,但是如何在没有模拟服务器错误的情况下模拟特定的行为呢?是的。出于这个原因,我想在get方法调用时模拟服务器错误,并测试如何处理错误。例如,我需要一个进入get方法的入口点来传递其中的异常,或者我需要在测试之前预先定义TestApp的行为。@starter您必须更清楚地了解要测试的内容。“服务器错误”就是当应用程序收到未捕获的异常时返回的结果。你想测试你的应用程序如何处理未捕获的异常吗?它如何处理在特定位置引发的特定异常?是的。我想测试它如何处理在特定位置抛出的特定异常,以及我的应用程序如何处理未捕获的异常。@starter那么你根本不是在测试500-你在测试你的应用程序的行为,并且应用标准的测试实践。也许我不明白什么,但是如何在没有模拟服务器错误的情况下模拟特定的行为呢?