Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法模拟一些GAE服务器错误?_Python_Google App Engine - Fatal编程技术网

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