Как тестировать api python
Перейти к содержимому

Как тестировать api python

  • автор:

Как тестировать api python

Тренер: Арсений Батыров
Приглашенный эксперт: Виталий Котов

Этот курс позволит научиться с нуля автоматизировать тестирование API на популярном стеке Python, requests, pytest, Allure и Docker.

Описание

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

Соответственно, кратно растет спрос на специалистов, которые будут тестировать эти API.

При этом API — одна из наиболее легко автоматизируемых частей тестирования. Она по определению предполагает возможности лёгкого управления с помощью программ. А значит, начать с него путь в автоматизации куда проще, чем с UI тестов.

В отличие от популярных инструментов для UI-тестирования, специалистов по тестированию API значительно меньше, и они куда более востребованы. А из двух наиболее популярных языков программирования Python является совершенно точно более простым в освоении.

Курс “Автоматизация тестирования API на Python” специально создан для быстрого погружения в навыки, необходимые тестировщику для успешного старта карьеры в автоматизации. Да и для ручного тестировщика понимание внутреннего устройства API и возможность быстро проверить свои гипотезы простым скриптом будут значительными плюсами в работе.

На этом курсе вы научитесь:

  • Устанавливать и настраивать окружение для работы — Python, PyCharm
  • Скачивать нужные для работы пакеты и библиотеки
  • Понимать устройство HTTP-протокола, API и REST
  • Работать с авторизационными и сессионными cookies
  • Работать с заголовками HTTP-запросов
  • Познакомитесь с форматом JSON и научитесь парсить ответы сервера
  • Писать простые и комплексные API-тесты
  • Создавать отчёты в Allure
  • Запускать тестирование API в Docker

Для кого этот курс:

  • для начинающих автоматизаторов
  • для тех, кто хочет эффективно и быстро автоматизировать тесты на API
  • для тех, кто уже перерос тесты в Postman
  • для тех, кому интересна крутая альтернатива стека на Java

Внимание. Созданный нами на занятиях фреймворк мы закинем на GitHub. Его можно будет добавить в резюме и применять на работе.

Краткое содержание курса:

Урок 1 — Настройка окружения, запуск первой программы

    1. Мотивация — зачем тестировать API
    2. Подбор стека технологий
    3. Установка Python3 и Pycharm на популярные ОС
    4. Введение в HTTP и API
    5. Структура HTTP запроса
    6. Создание проекта
    7. Установка pip3

    Урок 2 — Создание простых запросов к API

      1. Изучение тестового API
      2. Пишем первый GET-запрос
      3. Разбираемся с форматом JSON
      4. Отправка data и get-параметров в запросе
      5. Автоматический парсинг JSON
      6. Работа с POST-запросами
      7. Интерпретация кодов ответа сервера
      8. Чтение и отправка headers запроса
      9. Чтение и отправка cookies запроса

      Урок 3 — Интеграция pytest в проект

        1. Знакомство с библиотекой pytest
        2. Параметризованный тест
        3. Создание API-тестов на авторизацию
        4. Функция setup в pytest, фикстуры
        5. Начало работы над фреймворком

        Урок 4 — Создание фреймворка и запуск в Docker

          1. Создание фреймворка — работа с гибкими assert и verify
          2. Создание API-тестов на регистрацию
          3. Работа с PUT-запросами
          4. Создание кастомных параметров запроса
          5. Автоматическое логирование запросов и ответов, работа с логами
          6. Добавление Allure-отчетов к проекту
          7. Запуск проекта в Docker

          Технические требования

          Для выполнения заданий вам потребуется:

          • Windows 10, или Mac OS Big Sur, или Ubuntu 18 или выше
          • Процессор i-серии (i3, i5, i7) или аналогичный от AMD
          • Минимум 4 GB RAM
          • 1 GB на жёстком диске
          • Разрешение экрана минимум 1280 x 800

          Требования к знаниям

          Для прохождения курса не нужны никакие предварительные знания о работе с HTTP и API. Мы всему научим. Однако, нужны базовые знания любого языка программирования:

          • Работа с циклами (for, while) и условиями (if)
          • Работа с функциями — входные параметры, return
          • Основы ООП — что такое классы и объекты классов, статические и нестатические функции

          Этих знаний будет достаточно.

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

          Также мы ожидаем, что вы уже обладаете базовой компьютерной грамотностью. На этом курсе мы будем работать с командной строкой, консольным интерфейсом, сетями, клиент-серверной архитектурой. Если вы не уверены, что знаете все это в должной мере — пройдите простой тест . Если по результатам теста вы получите меньше 20 баллов — мы рекомендуем пройти короткий курс “ Азбука IT ”. На нем вы сможете быстро получить все необходимые знания, которые совершенно точно пригодятся вам в дальнейшем.

          Формат

          4 занятий (4 часа теории) + много практических заданий для самостоятельной работы + постоянные консультации тренера в чате.

          Раз в неделю по средам до 12.00 по Московскому времени выкладываются теоретические лекции, ссылки на дополнительные материалы, домашняя работа.

          Теоретическую информацию можно посмотреть в любое удобное время.

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

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

          Все выпускники, успешно сдавшие домашние задания, получают сертификат.

          Материалы курса доступны в течение года с даты окончания.

          Условия

          Стоимость участия для физических лиц: 10 000 рублей.

          Стоимость участия для юридических лиц: 12 500 рублей за весь курс за одного участника. При регистрации от 3-х участников на один курс действует 15% скидка.

          Организатор тренинга: ИП Батыров Арсений Георгиевич, ИНН 370207708748, ОГРНИП 316370200075996

          Услуги оказываются на основании публичного договора оферты. Ознакомиться с договором можно ЗДЕСЬ.

          Если Вы хотите оплатить тренинг прямо сейчас, то нажмите кнопку выше (если кнопка активна, значит можно оплачивать не беспокоясь о наличии мест). После оплаты мы пришлем письмо о регистрации на курс и подтверждение оплаты. Если Вы не получили письмо в течение рабочего дня, просто отправьте сообщение на trainings@software-testing.ru

          Если Вы хотите совершить оплату позже, для гарантированного участия обязательно забронируйте место на тренинге, для этого необходимо нажать на кнопку ЗАПИСАТЬСЯ справа от тренинга и заполнить все необходимые поля

          Если у Вас есть какие-то вопросы, их можно задать по указанному выше адресу.

          Информация для юридических лиц:

          Для регистрации на тренинг и оформления договора и выставления счета на оплату нажмите кнопку Записаться, выберите пункт Организация и заполните все поля.

          Обратите внимание, что при постоплате стоимость тренинга увеличивается на 25%.

          В случае возникновения вопросов обращайтесь по адресу trainings@software-testing.ru.

          Home

          В этой короткой серии статей я хочу исследовать библиотеку запросов Python и то, как ее можно использовать для создания тестов REST API. Это первая статья, и она посвящена тому, как начать и написать первые тесты для выборочного REST API.

          Как начать

          Для начала нам понадобится свежая установка интерпретатора Python, который можно скачать здесь. Затем нужно создать новый проект в IDE (я использую PyCharm, но сойдет любая приличная IDE) и установить библиотеку запросов. Проще всего использовать pip, менеджер пакетов Python:

          pip install -U requests

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

          Тестируемое API

          Для примеров в этой статье я буду использовать REST API Zippopotam.us. Этот API берет код страны и индекс, и возвращает данные о геолокации, соответствующей этой стране и индексу. К примеру, GET-запрос к http://api.zippopotam.us/us/90210 вернет код HTTP-статуса 200 и вот такое тело ответа JSON:

          1. «post code»: «90210»,
          2. «country»: «United States»,
          3. «country abbreviation»: «US»,
          4. «places»: [
          5. «place name»: «Beverly Hills»,
          6. «longitude»: «-118.4065»,
          7. «state»: «California»,
          8. «state abbreviation»: «CA»,
          9. «latitude»: «34.0901»
          10. >
          11. ]
          12. >

          Первый тест с использованием запросов и pytest

          В качестве первого теста воспользуемся библиотекой запросов, чтобы вызвать вышеуказанный эндпойнт API и написать утверждение, проверяющее, что код HTTP-статуса равен 200:

          1. def test_get_locations_for_us_90210_check_status_code_equals_200():
          2. response = requests.get(«http://api.zippopotam.us/us/90210»)
          3. assert response.status_code == 200

          Что тут происходит? В первой строчке теста мы вызываем метод get() из библиотеки запросов, чтобы выполнить запрос HTTP GET к определенной конечной точке, и сохраняем полный ответ в переменной response. Затем мы получаем свойство status_code из объекта ответа и пишем утверждение, используя ключевое слово pytest – assert, — проверяющее, что код статуса равен 200, как и ожидалось.

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

          Даст в результате такую информацию в консоли:

          Кажется, наш тест пройден. Так как я не доверяю тестам, падения которых не видел (и вам не советую), давайте изменим ожидаемый HTTP-код статуса с 200 на 201 и посмотрим, что будет.

          Это изменение, как можно видеть, заставило тест упасть. Кажется, с этим тестом все в порядке.

          Расширение тестового набора

          Как правило, нас интересует не только HTTP-код статуса ответа. К примеру, давайте проверим, правильно ли значение заголовка Content Type идентифицирует тело ответа как формат JSON:

          That makes our test fail, as you can see. It looks like we’re good to go with this one.

          1. def test_get_locations_for_us_90210_check_content_type_equals_json():
          2. response = requests.get(«http://api.zippopotam.us/us/90210»)
          3. assert response.headers[‘Content-Type’] == «application/json»

          В объекте ответа заголовки доступны как словарь (список пар ключ-значение) headers, и получить значение определенного заголовка можно, передав правильный ключ (имя заголовка). Затем мы можем проверить полученное значение, используя утверждение pytest и ожидаемое значение ‘application/json‘.

          Как насчет проверки элементов тела ответа? Давайте вначале убедимся, что элемент тела ответа country (см. пример ответа JSON выше) соответствует стране United States:

          1. def test_get_locations_for_us_90210_check_country_equals_united_states():
          2. response = requests.get(«http://api.zippopotam.us/us/90210»)
          3. response_body = response.json()
          4. assert response_body[«country»] == «United States»

          Библиотека запросов поставляется со встроенным декодером JSON, которым можно пользоваться для получения тела ответа из объекта ответа и превращения его в настоящий JSON-объект. Декодер вызывается методом json(), который вернет ошибку ValueError, если тела ответа не существует, или в нем невалидный JSON.

          После того, как мы трансформировали тело ответа в объект JSON, мы можем получить доступ к элементам тела, обращаясь к их имени – в этом случае country.

          Для извлечения и проверки значения имени места для первого места в списке можно сделать что-то вроде этого:

          1. def test_get_locations_for_us_90210_check_city_equals_beverly_hills():
          2. response = requests.get(«http://api.zippopotam.us/us/90210»)
          3. response_body = response.json()
          4. assert response_body[«places»][0][«place name»] == «Beverly Hills»

          Последний пример – давайте проверим, что список мест, возвращенных API, содержит ровно одну запись:

          1. def test_get_locations_for_us_90210_check_one_place_is_returned():
          2. response = requests.get(«http://api.zippopotam.us/us/90210»)
          3. response_body = response.json()
          4. assert len(response_body[«places»]) == 1

          После конвертации тела ответа в JSON все это довольно просто. Метод len(), встроенный в Python, возвращает длину списка, в этом случае – количество элементов в массиве places в возвращенном API документе JSON.

          В следующий раз мы рассмотрим создание управляемых тестов с использованием запросов и pytest.

          Использование примеров

          Примеры кода, использованного в статье, можно найти на моей странице GitHub. Скачав проект, запустите следующее (если вы правильно установили Python):

          pip install -r requirements.txt

          из корня проекта python-requests для установки нужных библиотек, и вы сможете запустить тесты самостоятельно.

          Тестирование с помощью Python

          Изображение баннера

          В этой статье Вы узнаете о том как можно тестировать ПО с помощью Python .

          Я начну с подготовки рабочей среды, затем перейдём к простым заданиям, которые могут поручить начинающему тестировщику.

          На следующем этапе рассмотрим библиотеку unittest и изучим немного теории.

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

          Изображение баннера

          Статья нуждается в переработке, так как этот питон устраивал меня в самом начале, но сейчас уже страшно смотреть на код.

          Использование Python для тестирования ПО.

          Подготовка рабочей среды

          Чтобы отправлять POST , GET и другие HTTP запросы с помощью python нужно в текст программы добавить строчку import requests. Request сперва нужно установить, для этого нужен pipenv, а для установки pipenv нужен pip

          sudo apt install python-pip

          Если нужно обновить pip

          pip install —upgrade pip

          pip install pipenv

          Прежде чем устанавливать что-либо кроме pip убедитесь в том, что Вы знакомы с работой в виртуальном окружении .

          pipenv install requests

          Теперь наше python окружение готово к тестированию интерфейсов .

          На вашем компьютере может быть установлено несколько версий Python. Чтобы узнать какую версию используют ваши программы перейдтие по ссылке

          Примеры программ

          Создаем файл post.py и пишем следующий код

          import requests r = requests.post(‘http://url.html’, data = {‘site’:’andreyolegovich.ru’})

          Реальный пример 1

          Задача

          Есть сервер, на котором отображаются подключённые устройства. Назовем его Менеджер_Устройств

          Задача — заселить сервер новыми устройствами, количество — 1000 устройств.

          Нужно, чтобы у каждого устройства был уникальный ID. Иначе получим ошибку.

          Познакомившись с API этого сервера можно узнать, что запрос, которым добавляется новое устройство, выглядит следующим образом:

          Также из API известно, что в этом запросе передаётся JSON

          По заданию: itemModelId, itemDescription и uptime нужно делать уникальными.

          Таким образом уникальных величины должно быть четыре.

          Можно, конечно, посылать запросы из SOAP UI по одному, вручную изменяя Unique_ID, но это будет очень долго.

          Изображение баннера

          Решение. Часть 1 — Комментарии

          Пишем скрипт на Python, используя знания, полученные в начале этой статьи и в статье Python. Сначала импортируем нужные библиотеки.

          Затем делим URL на три части: первая и третья остаются неизменными, а между ними мы будем вставлять переменую.

          После этого запускаем цикл от 1 до 1000. Значения переменной i мы будем использовать для создания уникальных ID. С этой целью создадим три переменные: для наглядности они все будут заканчиваться на _var а затем я выделю их зелёным цветом.

          И, наконец, создаём переменную json_string, в которую запишем нужный нам JSON с небольшими изменениями. Вместо статичных itemModelId, itemDescription, uptime вставляем переменные заданные на предыдущем шаге.

          Внимательно следим за отступами, т.к. отступ обозначает тело цикла.

          Решение. Часть 2 — Код

          import requests import json import urllib2 import uuid headers = {«Content-Type»: «application/json»} base_url = ‘http://device_manager.com:4880/manager/rest/control/devices/’ end_url = ‘/apps/Client_Name/status/$timestamp=1529086249’ for i in range(1,1000): c = str(i) item_model_var = «AASuperDevice» + c item_description_var = «Andrei» + c uptime_var = i * 50 Unique_ID_var = «Unique_ID» + c url = base_url+str(Unique_ID_var) + end_url json_string = {«status»: {«clientStatusData»: {«message»:»Everything is OK», «status»:»OK» }, «itemsStatuses»: [{ «message»:»URN.SU Server simulated», «status»:»ENABLED», «name»:»Connection», «Number»:»0″ }, { «message»:»TopBicycle.RU Power: 250[mW], Session: 1″, «status»:»OK», «name»:»AndreyOlegovih.ru», «Number»:»1″ }], «runningStatus»: { «restarted»:»true», «uptimeMSec»:uptime_var} }, «clientInfo»: { «applicationInfo»:{«applicationVersion»:»19.61.04.12″ }, «deviceInfo»: {«itemDescription»: item_description_var, «itemModelId»:item_model_var, «statusUpdateIntervalMSec»:»30000″ } }, } data_json=json.dumps(json_string) r=requests.put(url, data=data_json, headers=headers)

          Debugging

          Если что-то пошло не так можно попробовать простейший способ отследить в какой момент появляется ошибка — добавить в конец кода

          print («i =», i) print («i string=», c) print (item_model_var) print (u) print (uptime_var) print (r.text)

          Но имейте в виду, что в серьёзном софте лучше делать отладку дебаггером.

          Тестирование ПО: Автоматизация и Программирование на Python. API

          Домашние задания проверяются лично автором, никаких тестов с выбором ответов, только практические задания! Данный курс подходит для тех, кто желает изучить программирование на Python 3, а так же освоить очень востребованную и высокооплачиваемую профессию Тестировщика — автоматизатора используя самый популярный… Ещё

          Начальный уровень
          от 5 часов в неделю
          Сертификат Stepik

          Course cover

          9 539 учащихся

          Чему вы научитесь

          • Базовый курс программирования на Python 3.
          • Узнаете принципы Объектно-ориентированного программирования на Python 3.
          • Напишите полноценный проект по автоматизации тестирования API.
          • Научитесь тестировать API с помощью Postman.
          • Производить запуск тестов используя библиотеку Pytest с необходимой конфигурацией.
          • Закрепите свои знания в тестовых заданиях, которые максимально приближены к тем которые выполняет реальный специалист.

          О курсе

          Описание курса

          ВНИМАНИЕ. В данном курсе абсолютно НЕТ ВОДЫ и ненужной информации. Если Вы любите бесполезные, скучные и нудные видео от которых хочется спать — то Вам не подойдет данный курс.

          Домашние задания проверяются лично автором, никаких тестов с выбором ответов, только практические задания!

          В связи с политикой Google Play Store, с 23.01.2023 курсы можно приобретать только через Web-версию платформы (браузер в мобильном устройстве, через браузер PC). В мобильной версии приложения по-прежнему можно продолжать обучение.

          В результате прохождения этого курса, вами будет написан проект по автоматизации тестирования API на Python. Который вы можете спокойно брать и применять на своих рабочих проектах, а так же изучив который сможете указать в своем резюме и иметь козырь при поиске новой работы!

          Python 3 входит в ТОП-5 наиболее популярных языков программирования. С этого стоит начинать изучать программирование. Язык очень прост и идеально подходит для новичков, которые хотят изучить программирование. Python станет отличным выбором в качестве вашего первого языка программирования.

          Данный курс включает в себя практические занятия и домашние задания по следующим темам:

          — программирование на Python 3;

          — практические задания по написанию кода с проверкой от преподавателя;

          — запуск и конфигурация тестов с помощью фреймворка PyTest;

          — навыки работы с библиотекой Requests: отправка запросов, обработка ответов для тестирования API;

          — тестовые задания максимально приближенные к реальной работе тестировщика-автоматизатора;

          — пошаговая инструкция по написанию проекта по автоматизации тестирования API и написание самого проекта;

          — научитесь подключать в проект логирование;

          — научитесь подключать в проект отчеты Allure;

          — тестирование API с помощью Postman.

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

          Если вы стремитесь развиваться и не стоять на месте, вам интересно расширять границы, получать новые знания, вы хотите развиваться в области тестирования и готовы вкладывать свои ресурсы ради собственного роста — вы на верном пути.

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

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

          Видео лекции сочетает в себе как объяснение базовых понятий и элементов, необходимых для программирования и автоматизацию, так и наглядную демонстрацию их применения.

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

          Обязательно попрактикуйтесь и напечатайте весь код, который указан в видео, а так же потренируйтесь в создании собственных классов, методов и модулей. Так как практика — это неотъемлемая часть в обучении.

          По любым вопросам и пожеланиям обращайтесь, пожалуйста, по почте aleksandr_stepik@mail.ru и я буду рад помочь ответить на них.

          Успехов в начинаниях. Дорогу осилит идущий!

          Для кого этот курс

          Для людей которые желают освоить программирование на Python 3. Для желающих изучить тестирование API с помощью написания автотестов на Python. Для желающих изучить тестирование API с помощью Postman. Для начинающих тестировщиков и разработчиков, а так же специалистов с опытом. Специалисты, которые ищут новые инструменты для автоматизации.

          Начальные требования

          В ходе курса вы получите все необходимые знания, включая программирование на Python и навыки работы с необходимыми инструментами, для тестирования API, можно начинать с нуля.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *