Я пытаюсь следовать практике TDD при написании приложения Tornado. У меня есть конечная точка с методом get
, которые получают данные из нескольких API, фильтруют, объединяют и отправляют ответ. Для этого обработчика get
я создал помощника, который отвечает за выборку асинхронных данных. И я хочу написать для этого тесты.Как написать тесты для AsyncHTTPClient Tornado?
Helper выглядит следующим образом:
class DummyHelper(object):
@gen.coroutine
def fetch(self, url):
http_client = AsyncHTTPClient()
response = yield http_client.fetch(url)
raise gen.Return(response.body)
и тесты:
from tornado.testing import AsyncHTTPTestCase
from tornado.web import HTTPError
import app
from lib.handlers.dummy import DummyHelper
from tornado.testing import gen_test
class TestDummyHandler(AsyncHTTPTestCase):
def get_app(self):
return app.get_app()
@gen_test
def test_200_fetch(self):
helper = DummyHelper()
response = yield helper.fetch("http://google.com/")
self.assertEqual(response.code, 200)
@gen_test
def test_404_fetch(self):
helper = DummyHelper()
with self.assertRaises(HTTPError):
yield helper.fetch("http://google.com/test")
Все отлично работает для test_200_fetch
. Но он не работает для test_404_fetch
. Как заставить его работать? И должен ли я даже написать эти тесты?
Вы можете написать кусок кода, как обрабатывать 404 для 'DummyHelper.fetch'. Я пытаюсь реализовать то, что вы упомянули, но оно все еще терпит неудачу. –
Я добавил несколько примеров – kwarunek