2016-01-28 2 views
2

Я настроил мое пирамиду приложения для того, чтобы иметь user объект, прикрепленный к request, когда он был идентифицирован после official tutorial. Пока все хорошо ... но пока он работает отлично, и я могу проверить его с помощью браузера, я не понимаю, почему в тестах веб-тестирования user не привязан к запросу. Я настроил мой тестовый класс таким образом:Пирамиды с WebTest

from my_pyramid_app import main as make_app 
from webtest.app import TestApp 
from pyramid import testing 

class LoginTestCase(TestCase): 
    def setUp(self): 
     self.config = testing.setUp() 
     self.app = TestApp(make_app({})) 

И в тесте:

# submit valid login data to /login and expect redirect to "next" 
response = self.app.post('/login', data, status=302) 
redirect = response.follow() 

Он работает, как ожидалось, пользователь получает проверку подлинности и перенаправляется на пути, указанному в «следующий», но redirect.request не содержит user. Зачем? Что мне делать?

пс. documentation of webtest говорит:

Лучший способ для имитации аутентификации, если ваше приложение выглядит в окруже [ «REMOTE_USER»], чтобы увидеть, если кто-то проходит проверку подлинности. Тогда вы можете просто установить это значение, как:

app.get ('/' секрет, extra_environ = Dict (REMOTE_USER = 'боб'))

, но если честно, это звучит demential мне:/(я имею в виду, если я определяю переменную вручную какой смысл теста ?!)

+0

У меня нет ответа на вашу проблему, но Cookbook Community Cookbook не является «официальной документацией». Это коллективная коллекция рецептов. Официальную документацию можно найти по адресу: http://docs.pylonsproject.org/projects/pyramid/en/latest/ –

+0

Какой механизм должен поддерживать пользователь по отдельным запросам? В обычном веб-сервере вы обычно делаете это с помощью сеансов, файлов cookie и т. Д. –

ответ

0

как WebTest и использование пирамиды WebOb, но это вовсе не означает, что запрос этой пирамиды и тот же объект, чем WebTest-х response.request

единственный неизменяемый объект, совместно используемый между веб-тестированием и тестируемым приложением i s словарь условий.

Это означает, что вы можете получить своего пользователя, если вы храните его в request.environ с ключом, например «myapp.user» (точка и строчные буквы важны, см. PEP333).

Смежные вопросы