Я хочу попытаться написать некоторый код после практики TDD. Я хочу создать простое приложение, основанное на системе торнадо python. Я смотрел через интернет, как люди пишут тесты для торнадо и нашел что-то вроде этого:Как написать модульные тесты для приложения торнадо python?
class TestSomeHandler(AsyncHTTPTestCase):
def test_success(self):
response = self.fetch('/something')
self.assertEqual(response.code, 200)
поправьте меня, если я ошибаюсь, но это больше похоже на интеграционные тесты. Вместо этого я пытаюсь написать простой модульный тест для какого-то фиктивного обработчика. Например, такие: один
class SomeHandler(BaseHandler):
@gen.coroutine
def get(self):
try:
from_date = self.get_query_argument("from", default=None)
datetime.datetime.strptime(from_date, '%Y-%m-%d')
except ValueError:
raise ValueError("Incorrect argument value for from_date = %s, should be YYYY-MM-DD" % from_date)
И тест будет выглядеть так:
class TestSomeHandler(AsyncHTTPTestCase):
def test_no_from_date_param(self):
handler = SomeHandler()
with self.assertRaises(ValueError):
handler.get()
Я знаю, что я скучаю по get()
заявления и просьбы. Не удалось обработать, как их создать.
Но мой вопрос: люди пишут тесты для торнадо, как в первом примере, или кто-то вызывает обработчики внутри приложения? Какая картина должна следовать? Было бы неплохо, если бы у кого-то был соответствующий код для обмена.
Как я понимаю, такой поток не является предпочтительным. Но в другом случае я не смогу проверить исключения. –
@viakondratiuk потребителем метода является некоторый клиент http (пользователь), любое исключение, которое вы его подняли, составляет всего 50 раз с некоторым сообщением, возможно, внутренней ошибкой. Все хорошо? Я так не думаю, что это показывает плохую обработку ошибок, попробуйте вернуть «возвращаемые» значимые ошибки (даже некоторые унифицированные сообщения), а дальнейшие вызовы и отладки служб будут намного проще. – kwarunek