/testproj_for_Beeline

тестовое задание

Primary LanguagePython

testproj_for_Beeline

тестовое задание

Задание:  Написать и автоматизировать тест-кейсы для нескольких endpoint'ов https://httpbin.org/ /headers /status/:code /redirect/:n

Требования к тестам :

  1. Запуск тестов должен осуществляться средствами (Pytest или Junit).

  2. Все запросы на сервер и ответы должны быть залоггированы.

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

1.  Возможность собирать отчёт.

2.  Возможность собрать документацию по автотестам.

3.  Возможность настраивать глобальное логгирование при запуске тестов.

Тест-кейсы: 1. Раздел Status_codes. Так как в реальности методы обычно имею разные названия внутри одной точки (path) сделаем проверку каждого метода. В реализации httpbin.org можно было бы обойтись универсальным методом для тестирования передавая в качестве параметров( тип метода, код, результат). Установка кодов 302 и 303 возвращают 200 статус код с сервера httpbin.org, также проверим тип возвращаемого контента в тестах.

1.1. Проверка метода GET status на корректность возвращаемого значения (передаем ожидаемый код, сверяем его значение с полученным, любые значения от 100 до 999)

1.2. Проверка метода POST status на корректность возвращаемого значения (передаем ожидаемый код, сверяем его значение с полученным, любые значения от 100 до 999)

1.3. Проверка метода PUT status на корректность возвращаемого значения (передаем ожидаемый код, сверяем его значение с полученным, любые значения от 100 до 999)

1.4. Проверка метода PATCH status на корректность возвращаемого значения (передаем ожидаемый код, сверяем его значение с полученным, любые значения от 100 до 999)

1.5. Проверка метода DELETE status на корректность возвращаемого значения (передаем ожидаемый код, сверяем его значение с полученным, любые значения от 100 до 999)

1.6 Проверка типа содержимого в ответе — ожидается content-type = text/html в header ответного сообщения для любых методов: GET, POST, PUT, PATCH, DELETE

2. Проверка метода /headers

Проверка метода /headers также предполагает предварительную установку тестовых значений на сервере httpbin.org, а потом сверку установленного значения headers с возвращаемым значением в поле headers при вызове метода /headers

2.1 Проверка статус кода метода /headers. Ожидается значение 200.

2.2 Проверка типа содержимого в ответе — ожидается content-type = application/json в header ответного сообщения

2.3 Проверка наличия в body ответного пакета JSON- структуры с именем поля «headers» в заголовке структуры( т.к. сервер httpbin.org принимает запрос GET headers и в ответ в body пакета отсылает принятое значение headers при запросе)

3. Проверка метода /redirect/{n}	

Перенаправление запроса на несколько адресов

3.1 Проверяем статус код на вызов метода /redirect/n — ожидаем код ответа 302 для всех n, пробуем с разными n(0,1,2,10)

3.2 Тип контента в перенаправленном урле должен быть text/html'

3.3 Проверяем количество перенаправлений на запрос /redirect/n ,пробуем со значениями n=1,2,3,10,20. Количество редиректов должно совпадать с указанным значением n

3.4 Редирект c /redirect/{n} должен осуществляться на следуюшие url: последнее значение n: /redirect/{n} для всех остальных значений /relative-redirect/{n-1}, /relative-redirect/{n-2}, … , /relative-redirect/1.

Особенности тестирования:

  1. Так как ресурс httpbin.org бывает не доступен, долго отвечает, а также наблюдались сбои при обращении из-за нагрузки со стороны других пользователей тестирование проводилось на локальном сервере путем разворачивания ресурса httpbin.org в докере(docker run -p 80:80 kennethreitz/httpbin) по адресу http://0.0.0.0:80 — меняется в настройках проекта.
  2. После запуска команды $pytest в корне проекта обносляются файлы в папке alluredir
  3. Создание отчета выполнятся запуском команды $allure serve <путь к папке alluredir в проекте>. Отчет успешно создается с отображением логов на запросы/ответы. Предварительно в системе должен быть установлен allure. В реальной жизни отчеты allure интегрируется в систему CI/CD, что более удобно для просмотра.

Настройки проета:

  1. Установка необходимых пакетов для работы проекта: pip install -r requirements.txt
  2. Запуск тестов: $pytest -v
  3. Создания отчета: $allure serve <путь к папке alluredir в проекте>
  4. Настройка домена в файле setting.py переменная DOMEN_NAME
  5. Настройки запуска pytest - файл pytest.ini
  6. Запуск тестируемого проекта(httpbin.org) в докере: docker run -p 80:80 kennethreitz/httpbin