Автотесты для API сервиса «Яндекс.Самокат»
Проект реализован по принципам модульности и повторного использования.
Все вспомогательные компоненты вынесены в отдельные файлы.
- data — папка с константами и тестовыми данными
URL
— базовый URL и эндпоинты APIMessage
— тексты ошибок из APITestData
— тестовые данные (например, несуществующие логин и пароль)
- generators — генераторы тестовых данных
generate_fake_courier()
— возвращает данные нового курьераgenerate_order_data()
— возвращает тело заказа
- helpers — вспомогательные функции
modify_order_data(key, value)
— изменяет поле в теле заказа
- methods — методы API
CourierMethods
— создание, логин, удаление курьераOrderMethods
— создание заказа, получение списка заказов
- tests — папка с автотестами
test_create_courier.py
— тесты на создание курьераtest_login_courier.py
— тесты на авторизацию курьераtest_create_order.py
— тесты на создание заказаtest_get_orders.py
— тесты на получение списка заказов
- conftest.py — фикстуры для подготовки и очистки данных
- requirements.txt — зависимости
- target — папка с готовым Allure-отчётом
pip install -r requirements.txt
pytest --alluredir=./allure-results
allure serve ./allure-results
Тесты проверяют корректность регистрации курьера и обработку ошибок.
test_create_courier_success
- Проверяет, что можно создать курьера с валидными данными.
- Ожидаемый результат: статус 201,
{"ok": true}
.
test_create_courier_with_existing_login_conflict
- Проверяет, что нельзя создать двух курьеров с одинаковым логином.
- Ожидаемый результат: статус 409, сообщение об ошибке.
test_create_courier_without_required_field_error
(параметризованный)- Проверяет, что нельзя создать курьера без обязательных полей:
login
,password
. - Ожидаемый результат: статус 400, сообщение об ошибке.
- Проверяет, что нельзя создать курьера без обязательных полей:
Тесты проверяют логику входа в систему.
test_login_courier_success
- Проверяет, что зарегистрированный курьер может авторизоваться.
- Ожидаемый результат: статус 200, в ответе есть
id
.
test_login_courier_without_login_error
,test_login_courier_without_password_error
- Проверяют, что нельзя авторизоваться без логина или пароля.
- Ожидаемый результат: статус 400, сообщение об ошибке.
test_login_courier_invalid_login_error
,test_login_courier_invalid_password_error
- Проверяют, что нельзя авторизоваться с несуществующим логином или паролем.
- Ожидаемый результат: статус 404, сообщение об ошибке.
Тесты проверяют создание заказа с разными цветами самоката.
test_create_order_with_different_colors_success
(параметризованный)- Проверяет, что можно создать заказ с цветами:
["BLACK"]
,["GREY"]
,["BLACK", "GREY"]
, без цвета. - Ожидаемый результат: статус 201, в ответе есть
track
.
- Проверяет, что можно создать заказ с цветами:
Тесты проверяют доступ к списку заказов.
test_get_order_list_success
- Проверяет, что можно получить список всех заказов.
- Ожидаемый результат: статус 200, в ответе есть ключ
orders
, значение — список.
create_and_delete_courier
- Создаёт курьера перед тестом, удаляет после.
- Используется в тестах, где нужен существующий курьер.
delete_courier
- Позволяет добавить учётные данные для удаления после теста.
- Используется в тестах, где курьер создаётся вручную.