Как использовать тестовый обработчик сервера торнадо, который аутентифицирует пользователя через безопасный файл cookie

Как написать единичный тест для обработчика торнадо, который аутентифицирует пользователя через безопасный файл cookie? Вот код (и код sudo) для фиктивного теста, который я бы хотел сделать. Я использую Tornado 3.1.

from tornado.web import Application, RequestHandler from tornado.escape import to_unicode, json_decode, json_encode from tornado.testing import AsyncHTTPTestCase class MainHandler(RequestHandler): """ Base handler to authenticate user via a secure cookie. This is used for an API. """ def get(self): user = self.get_secure_cookie('user') if user == 'user_email': self.write('sucess') else: self.write('fail') class UserAPITest(AsyncHTTPTestCase): def get_app(self): self.app = Application([('/', MainHandler)], cookie_secret='asdfasdf') return self.app def test_user_profile_annoymous(self): #SUDO CODE (what should go here?) #cookie = make_secure_cookie('user', 'user_email', cookie_secret) #headers = {'Cookie':cookie} response = self.fetch('/', method='GET', headers=headers) self.assertEqual('sucess', to_unicode(response.body) ) 

  • Результат кэширования setUp () с использованием Python unittest
  • Запись в Python в обработчик StringIO
  • PyDev unittesting: как захватить текст, зарегистрированный в logging.Logger в "Captured Output"
  • Можно ли использовать Nose для одновременного запуска одного теста несколько раз?
  • Как написать функциональный тест для службы DBUS, написанной на Python?
  • Объект Python unittest.TestCase не имеет атрибута 'runTest'
  • Mocking urllib2.urlopen (). Read () для разных ответов
  • Python Смещение функции из импортированного модуля
  • 2 Solutions collect form web for “Как использовать тестовый обработчик сервера торнадо, который аутентифицирует пользователя через безопасный файл cookie”

    Использование mock :

     import mock ... class UserAPITest(AsyncHTTPTestCase): def get_app(self): self.app = Application([('/', MainHandler)], cookie_secret='asdfasdf') return self.app def test_user_profile_annoymous(self): with mock.patch.object(MainHandler, 'get_secure_cookie') as m: m.return_value = 'user_email' response = self.fetch('/', method='GET') self.assertEqual('sucess', to_unicode(response.body) ) 

    Кажется, вы можете попытаться использовать create_signed_value из модуля tornado.web :

     from tornado.web import create_signed_value class UserAPITest(AsyncHTTPTestCase): def get_app(self): self.app = Application([('/', MainHandler)], cookie_secret='asdfasdf') return self.app def test_user_profile_annoymous(self): cookie_name, cookie_value = 'Cookie', 'value' secure_cookie = create_signed_value( self.app.settings["cookie_secret"], cookie_name, cookie_value) headers = {'Cookie': '='.join((cookie_name, secure_cookie))} response = self.fetch('/', method='GET', headers=headers) self.assertEqual('success', response.body) 
    Python - лучший язык программирования в мире.