Как выполнить TDD при разработке Django API - PullRequest
0 голосов
/ 19 января 2011

При выполнении TDD для API приложения Django я пишу тесты, демонстрирующие, что при наличии надлежащих ограничений ожидаемые результаты достигаются. Как мне написать тесты для бесконечных перестановок случаев, когда входные данные «неправильны».

На ум приходят две вещи:

1) Я не должен нарушать динамический аспект Python путем проверки типов каждого ввода, и

2) Я должен тестировать «интересные» функции или методы (не методы получения и установки), хотя я не уверен, как это применимо к API

1 Ответ

3 голосов
/ 19 января 2011

С TDD хороший способ оставаться в здравом уме - это писать тесты, которые охватывают требуемое количество допустимых входных данных, если тесты не пройдены, потому что кода еще нет, написать как можно меньше кода, чтобы их пропустить, затем выполнить рефакторинг этого кодав нечто готовое к производству, обеспечивая при этом ваши испытания еще пройти.Похоже, вы сделали этот бит.

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

Конечно, это все еще требует времени для разработки и кодирования (даже если вы автоматизируете его, перебирая списки переменных и вызывая один и тот же тест несколько раз с разными входами), и хотя это определенно стоит сделать, если вы хотите большего, вы всегда можете посмотреть на что-то вроде fuzz testing для дополнительного разума.

PS.Что касается тестирования API, я бы сосредоточился на создании тестовых запросов к выставленным коллекциям / ресурсам API (это легко сделать в виде модульных тестов с помощью тестового клиента Django), а также на непосредственном модульном тестировании любых нетривиальных методов, которые API использует вчехлы.Методы получения, установки и т. Д. Должны затем неявно проверяться функциями более высокого уровня.По идее: о)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...