从app.yaml加载为wsgi应用程序

时间:2012-03-23 02:01:02

标签: python google-app-engine wsgi

我无法通过阅读sdk的来源立即确定这是否可行。

但是,有没有办法获得dev_appserver从app.yaml加载的应用程序的wsgi版本?

我非常希望有像

这样的功能
def app_from_yaml(path_to_yaml):
    ...

如果存在这种情况,我实际上可以为blobstore逻辑编写自动化测试,而不必再手动执行废话。任何想法?

2 个答案:

答案 0 :(得分:1)

我不是100%肯定你在问什么,但答案可能在于google.appengine.ext.webapp.util.run_wsgi_app

就blobstore本身而言,已经有google.appengine.api.blobstore.blobstore_stub可以用来测试Blobstore(虽然我真的不明白你的上下文中“手动”的含义,所以也许这没有帮助)

答案 1 :(得分:1)

我不知道任何可以做你想要的解决方案。我强烈怀疑原因是dev_appserver在加载应用程序时做了很多事情,包括解析各种yaml文件,设置路由,存根API(包括App Engine和Python),限制环境模拟appserver等等上。函数app_from_yaml(path_to_yaml)必须执行dev_appserver.py所做的事情。由于dev_appserver.py已经完成,我认为没有人愿意添加另一个实现。

我看到了两种解决问题的方法。

  1. 使blobstore API更易于测试
  2. 使用dev_appserver启动您的应用并对其运行测试
  3. 前一个是相当困难的,因为它需要重构当前的事情如何完成,这可能会引入微妙的回归。后者是我们为这种大型测试(实际上是集成测试)做了很多工作。我们使用gaedriver。

    在您要测试blobstore的特定情况下(我们也会这样做),我们从测试中启动应用程序,使用某个URL上传blob,然后点击另一个并检查blob是否已正确处理。它不如使用测试平台那么好,但它起作用,相当直接且相当快。