Python 有没有办法模拟一些GAE服务器错误?
在Python 有没有办法模拟一些GAE服务器错误?,python,google-app-engine,Python,Google App Engine,在app.yaml文件中是否有方法测试我的错误处理程序设置,特别是错误代码超过配额?测试错误处理程序 dev_appserver.py是解析您的app.yaml并提供这些错误文件的应用程序。这意味着您最好的选择可能是一个直接的验收测试,在该测试中,您将调出dev_appserver.py,并尝试使用get和put点击它localhost:8080,这将触发您预期的各种错误 因此,如果/foo返回一个404,您可以使用: 测试超配额错误 在这种特定情况下,听起来像是您试图显式地提高超过\u配额错误
app.yaml
文件中是否有方法测试我的错误处理程序
设置,特别是错误代码超过配额
?测试错误处理程序
dev_appserver.py
是解析您的app.yaml
并提供这些错误文件的应用程序。这意味着您最好的选择可能是一个直接的验收测试,在该测试中,您将调出dev_appserver.py
,并尝试使用get
和put
点击它localhost:8080
,这将触发您预期的各种错误
因此,如果/foo
返回一个404,您可以使用:
测试超配额错误
在这种特定情况下,听起来像是您试图显式地提高超过\u配额
错误。提到您正在查找的异常是apiproxy\u错误。OverQuotaError
我不确定您的测试代码是什么,但您是否尝试过使用“直接向上提升”raise
,显式地引发此错误
在引导我的apiproxy\u stub\u map
、设置路径等之后,我能够运行以下代码:
from google.appengine.runtime import apiproxy_errors
def test_foo():
raise apiproxy_errors.OverQuotaError
具体点总是好的。你能告诉我们你的
错误处理程序是什么样子的吗?到底是什么,,您正在通过app.yaml
路由的模块?如果超出配额,您可以轻松地延迟到单独的项目,并将其运行到超出配额的情况下mode@mvanveen我希望测试在中提到的基本处理程序,但如果有一种方法可以测试一般错误,那就太好了_handler@ShayErlichmen你的意思是用请求等以耗尽其资源?我想知道有没有更优雅的解决方案?@Falcon也许有,但你应该总是在真实的条件下进行测试(如果可能的话)。我不知道raise apiproxy_errors.OverQuotaError是否100%模拟准确,可能当出现真正的over quote错误时,其他代码也会出现。是的,我想这就是我想要的风格。因此,我们基本上可以使用try…在本地处理错误,除了块。(如我在评论中提到的,如果有一种方法可以在yaml
中测试设置,那就太好了)您能更具体一点吗?我不知道你想要“在yaml
中测试设置”是什么意思。你在app.yaml
中定义的端点测试有困难吗?就像在中一样,我们可以在app.yaml
中将静态页面设置为error\u handlers
,我不知道如何测试它们(虽然结果可能没有try…处理的结果有趣,但
除外)。我认为您最好的选择是通过dev_appserver.py
进行验收测试。您的app.yaml
是通过dev_appserver.py
运行的,以便正确地路由这些错误,因此我认为您无法使用引导测试床进行测试。或者,完全可以通过实际的WSGI路由错误应用程序。这将使自动化测试方式更容易。编辑:更新我的答案以更好地反映您的问题。感谢您的更新。我想我终于了解了GAE服务器上如何处理错误。事实上,问题非常清楚:HTTP 403
将用于耗尽带宽配额,并且(大概,我将对此进行测试)将由app.yaml
中指定的error\u处理程序
处理(仅允许静态页面的最小响应),即此错误不会传递到应用程序。应用程序只能处理由于超过其他配额而导致的错误。
from google.appengine.runtime import apiproxy_errors
def test_foo():
raise apiproxy_errors.OverQuotaError