Рубрики
Без рубрики

Эффективное тестирование API Python API с использованием Django и Patch

Сегодня я хотел бы предложить краткую витрину о том, как эффективно протестировать API Django. По сути, что … Помечено программированием, Python, тестированием.

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

Как?

Используя патч.

Патч – это декоратор в библиотеке Unittest.Mock . Это позволяет нам заменить атрибуты в нашей программе с помощью Макет Объекты и делают утверждения о том, как наша программа будет вести себя. Давайте взглянем.

Здесь у нас есть простое Django API, сгенерированное, используя мой стартовый проект . Он делает запрос на API Reddit для получения информации и возвращает простую полезную нагрузку JSON клиенту.

И, конечно же, соответствующий тест:

Но подождите – что если API Reddit находится вниз? Наш тест потерпит неудачу. Установки тесты никогда не должны потерпеть неудачу из-за чужих приложений. Они всегда должны проходить независимо от состояния других систем. Мы также не можем надежно захватить оба (1) Reddit – это нормально, и (2) Reddit Down. Для этого нам нужно использовать патч для USURP нашего звонка на API Reddit с помощью функции издевательства.

Давайте переписаним наш тест, используя патч:

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

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

Давайте суммируемся

Мы хотим захватить наши ответы API под тестом. Итак, мы использовали в нетестые. Однако иногда наша API зависит от других систем, вызывающих зависимость и потенциал, чтобы перейти с переходом. Чтобы решить эту проблему, мы используем патч. Патч позволяет нам узурпировать базовые функции и реализовать наши собственные тестовые функции. Затем мы использовали ключевое слово LAMBDA, чтобы определить нашими издевательствами в соответствии с лучшей читабельностью.

Спасибо за чтение и счастливого взлома!

Оригинал: “https://dev.to/zeevo/effective-python-api-testing-using-django-and-patch-1amj”