2015-05-18 2 views
9

Каков наилучший способ модульного тестирования RESTful API, который включает функции электронной почты (потерянные пароли, активация пользователя) в Python? Все делается через HTTP POST/GET и аутентификация, в настоящее время не участвует. Я бы просто использовал библиотеку запросов и вручную сделал все, что я хочу? Можно ли использовать запросы для автоматизации частей моего модульного теста, которые связаны с электронной почтой?Unit Test a RESTful API в Python

+1

Сначала вы должны тестировать свои обработчики без HTTP-накладных расходов. Все остальное на самом деле не является единичным тестом, а скорее каким-то интеграционным тестом. – poke

+2

, если вы используете http, это не единичный тест. как правило, если вы тестируете что-либо еще, кроме одного, в случае отдыха api всю маршрутизацию URL-адресов, обработку данных вообще - это не единичный тест. – Henning

ответ

11

Часто веб-каркас, который вы используете для реализации REST api, также предлагает поддержку тестирования модулей. Например:

Эти тестовые классы ярлыки которые подсоединяются запрос непосредственно в Url диспетчер фреймворки. Это избавляет вас от необходимости находить свободный порт, создавая «настоящий» сервер и подключая http-клиент из вашего модульного теста.

Что касается отправки электронной почты: я бы издевался над этой частью в методе TestCase.setUp. Просто измените ссылку на модуль/класс отправки электронной почты на другой модуль/класс, который переводит исходящую электронную почту обратно в модульный тест для оценки, а не по электронной почте.

+0

Эти инструменты могут быть полезны, если у вас есть приложение WSGI, но у рамки нет хорошей поддержки модульного тестирования: http://wsgi.readthedocs.io/en/latest/testing.html. –