загрузка из app.yaml как приложение wsgi - PullRequest
1 голос
/ 23 марта 2012

Я не мог сразу определить, возможно ли это, прочитав источник SDK.

Но есть ли способ получить wsgi-версию приложения, которую dev_appserver будет загружать из app.yaml?

Я так надеялся, что будет такая функция, как

def app_from_yaml(path_to_yaml):
    ...

Если бы это существовало, я мог бы на самом деле написать автоматические тесты для логики хранилища блогов, и мне больше не пришлось бы делать дерьмо вручную.Есть идеи?

Ответы [ 2 ]

1 голос
/ 24 марта 2012

Я не знаю ни одного решения, которое делает то, что вы хотите.Я сильно подозреваю, что причина в том, что dev_appserver делает много вещей при загрузке приложения, включая синтаксический анализ различных файлов yaml, настройку маршрутизации, отключение API (как App Engine, так и Python), ограничивает среду для эмуляции appserver и т. Д.на.Функция app_from_yaml (path_to_yaml) должна делать то, что делает dev_appserver.py.И поскольку dev_appserver.py уже делает это, я думаю, что никто не удосужился добавить еще одну реализацию.

Я вижу два способа решения вашей проблемы.

  1. Сделайте API-интерфейс blobstore более тестируемым
  2. запустите ваше приложение с помощью dev_appserver и запустите тесты против него

Первый вариант довольно сложен, потому что для этого потребуется рефакторинг того, как все делается в настоящее время, что может привести к появлению тонких регрессий.Последнее - это то, что мы много делаем для таких больших тестов (которые на самом деле являются интеграционными тестами).Для этого мы используем gaedriver.

В вашем конкретном случае, когда вы хотите проверить blobstore (что мы и делаем), мы запускаем приложение из теста, загружаем большой двоичный объект с использованием определенного URL-адреса и затем нажимаем на другойи проверьте, правильно ли был обработан BLOB-объект.Это не так хорошо, как использование тестового стенда, но это работает, довольно просто и довольно быстро.

1 голос
/ 23 марта 2012

Я не на 100% уверен в том, что вы спрашиваете, но ответ может лежать в google.appengine.ext.webapp.util.run_wsgi_app.

С точки зрения самого blobstore, уже есть google.appengine.api.blobstore.blobstore_stub, который можно использоватьпроверить в Blobstore (хотя я не совсем понимаю, что означает «вручную» в вашем контексте, так что, возможно, это не поможет).

...