Правильный способ начать модульное тестирование Web API

Правильный способ начать модульное тестирование Web API
Правильный способ начать модульное тестирование Web API - nci @ Unsplash

Мне нужно начать тестирование Web API, пока что я собираюсь начать с юнит-тестов и не могу понять, как правильно это сделать. Вот что я хочу сделать:

API состоит из списка конечных точек, к которым могут обращаться аутентифицированные пользователи. Я хочу для каждой конечной точки написать модульный тест, который проверяет:

  • Код состояния соответствует ожидаемому
  • Ответ - это правильный ответ в формате JSON
  • Фактический ответ соответствует ожидаемому

Можно ли тестировать несколько вещей в одном модульном тесте?

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

Я также хотел бы узнать, есть ли что-то, что вы бы тестировали в API помимо трех перечисленных выше вещей, моя идея состоит в том, чтобы проверить, что то, что получает пользователь, является ожидаемым результатом, а затем я начну тестировать функции, используемые внутри API.

Можно ли тестировать несколько вещей в одном модульном тесте?

Это зависит от того, что вы подразумеваете под "несколькими вещами". Тестовый пример должен проверять только одну "вещь", но если вещь, которую вы хотите проверить, это "ответ от моего API", то может потребоваться несколько проверок/выражений assert, чтобы проверить, что ответ, который вы получили, соответствует вашим ожиданиям. Но это все равно всего лишь одна вещь.

С другой стороны, вы проверяете несколько вещей, если один тестовый пример охватывает как успешный вызов вашего API, так и один или несколько неудачных вызовов.

Поэтому я подумал о создании нескольких тестов, по одному для каждого проверяемого параметра, как вы думаете, это хорошая идея?

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


LetsCodeIt, 19 декабря 2022 г., 02:53