2015-07-04 4 views
1

Я сделал отдых API, используя django-rest-framework.

У меня есть несколько конечных точек API. Некоторые из них используются для создания объектов, некоторые из них используются для перечисления объектов, некоторые из них используются для подсчета объектов и т. Д.

В моих тестах я тестирую каждую конечную точку, чтобы гарантировать, что, например, конечная точка создания будет принимать только запросы POST , Я тестирую конечные точки списка, чтобы убедиться, что они принимают GET, а не POST/PUT/PATCH/DELETE. Каждая конечная точка соответствует представлению, в котором есть параметр, который определяет, какие запросы они разрешают, но тесты гарантируют, что эти параметры будут работать. Тесты в основном утверждают, что возвращается определенный код состояния.

Тесты становятся довольно повторяющимися. Тесты для API комментариев составляют около 600 строк. Нужен ли этот вид тестирования и/или есть упрощенная альтернатива?Является ли тестирование доступа REST необходимым/хорошим?

ответ

0

Всегда существует хороший баланс между написанием избыточных тестов и получением достаточного уровня покрытия кода для ключевых областей системы.

Поскольку конечные точки в вашем приложении, скорее всего, будут иметь много движущихся частей (например, разбор ответа/запроса, HTTP-вызовы, доступ к хранилищам данных и т. Д.), Вы можете обнаружить, что слишком много тестов может значительно замедлить ваш тест люкс.

Вы часто обнаружите, что в сочетании с множеством стандартных модульных тестов (без ввода-вывода) достаточно небольшого количества целенаправленных сквозных тестов. Ключом является поиск здорового баланса между критическим охватом кода и надежной производительностью вашего набора тестов.

Существует большой Stack Overflow тема на этом, где Кент Бек обсуждает эффективный набор тестов:

How deep are your unit tests?

+0

Удивительный! Спасибо за ссылку! – dcgoss

2

Это подпадает под категорию тестов antipatterns где вы проверяете рамки/библиотеки вместо ваш собственный код.

Некоторые тесты, подобные этому, заслуживают внимания, особенно если вы не знакомы с каркасом, и они служат для проверки вашего использования. Тестирование его исчерпывающе, тем не менее, - это потерянное усилие, которое вы могли бы потратить на тестирование кода приложения.

Если вы действительно чувствуете, что инфраструктура или библиотека неустойчивы, и вы все еще хотите ее использовать, вам лучше тестировать ее напрямую, то есть развить проект (при условии, что он открыт с открытым исходным кодом), добавить некоторые тесты и сделать запрос на растяжение.

+1

Это отличный ответ, я никогда об этом не думал. Хотел бы я принять два ответа! – dcgoss

2

Я наткнулся на эту классную библиотеку: django-rest-assured, которая, кажется, берет много плиты котла, проверяя этот вид доступа REST. Это позволяет тестировать эту функциональность гораздо более тривиально и, возможно, даже стоит вашего времени.

+0

Да, django-rest-assured был специально создан для этой цели (я его автор). Однако, несмотря на то, что вы отлично справляетесь с лесами для полного покрытия вашего API, вы должны сократить его до минимума, требуемого вашим приложением, для простоты, производительности и ремонтопригодности ваших тестов по мере роста и созревания вашего проекта. – ydaniv

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