Conversation
…ей с одинаковым логином
data.py
Outdated
| MAIN_URL = 'https://qa-scooter.praktikum-services.ru' | ||
| CREATE_COURIER_URL = '/api/v1/courier' | ||
| LOGIN_COURIER_URL = '/api/v1/courier/login' | ||
| CREATE_ORDER_URL = '/api/v1/orders' | ||
| GET_LIST_ORDERS_URL = '/api/v1/orders' | ||
| CANCEL_ORDER_URL = '/api/v1/orders/cancel?track=' | ||
| DELETE_COURIER_URL = '/api/v1/courier/' # :id - Номер курьера, хранится в поле id таблицы Couriers | ||
| TAKE_ORDER_URL = '/api/v1/orders/accept/:id' # :id - Номер заказа, хранится в поле id таблицы Orders | ||
| GET_ORDER_BY_NUMBER = '/api/v1/orders/track' # track - Трекинговый номер заказа |
There was a problem hiding this comment.
Можно лучше: адреса лучше вынести из модуля тестов во внешний (например, urls). Они могут измениться, что затруднит поддержку тестов, плюс будет легче поддерживать несколько стендов если использовать конкатенацию адресов с базовым (MAIN_URL)
methods/login_method.py
Outdated
| login_pass = [] | ||
|
|
||
| # отправляем запрос на регистрацию курьера и сохраняем ответ в переменную response | ||
| response = requests.post('https://qa-scooter.praktikum-services.ru/api/v1/courier', data=body) |
There was a problem hiding this comment.
Нужно исправить здесь и далее: необходимо сделать allure-аннотации для каждого метода отправки запроса. При такой реализации лучше всего подходит контекст-менеджер with allure.step
tests/test_create_login.py
Outdated
| @allure.title('Test Successful login creation') | ||
| @allure.description('Тут создаем логин и проверяем ответ API') | ||
| def test_create_login(self,generate_login_data): | ||
| response = generate_login_data | ||
| assert response.status_code == 201 and response.json()['ok'] == True | ||
|
|
||
| @allure.title('Test UnSuccessful two login creation with the same data') | ||
| @allure.description('Тут пытаемся создать два курьера с одинаковыми логинами и проверяем ответ API') | ||
| def test_create_two_courier_with_same_data(self, generate_two_courier_with_same_login_data): | ||
| response = generate_two_courier_with_same_login_data | ||
| assert response.status_code == 409 and response.json()['message'] == OrderData.MESSEGE_TEXT_409 | ||
|
|
||
| @allure.title('Test UnSuccessful create courier without login data') | ||
| @allure.description('Пытаемся создать курьера без логина и проверяем ответ API') | ||
| def test_create_courier_without_login(self,generate_without_login_data): | ||
| response = generate_without_login_data | ||
| assert response.status_code == 400 and response.json()['message'] == OrderData.MESSEGE_TEXT_400 | ||
|
|
||
| @allure.title('Test UnSuccessful create courier without password data') | ||
| @allure.description('Пытаемся создать курьера без пароля и проверяем ответ API') | ||
| def test_create_courier_without_password(self, generate_without_password_data): | ||
| response = generate_without_password_data | ||
| assert response.status_code == 400 and response.json()[ | ||
| 'message'] == 'Недостаточно данных для создания учетной записи' | ||
|
|
||
| @allure.title('Courier creation returning code 201') | ||
| @allure.description('Проверка, что запрос возвращает правильный код ответа;') | ||
| def test_create_login_ok(self,generate_login_data): | ||
| response = generate_login_data | ||
| assert response.status_code == 201 | ||
|
|
||
| @allure.title('Test returning error without some data in body ') | ||
| @allure.description('Если нет поля "логин", запрос возвращает ошибку;') | ||
| def test_error_create_courier_without_login(self, generate_without_login_data): | ||
| response = generate_without_login_data | ||
| assert response.status_code == 400 and response.json()['message'] == OrderData.MESSEGE_TEXT_400 | ||
|
|
||
| @allure.title('Test returning error without some data in body ') | ||
| @allure.description('Если нет поля "пароль", запрос возвращает ошибку;') | ||
| def test_error_create_courier_without_password(self, generate_without_password_data): | ||
| response = generate_without_password_data | ||
| assert response.status_code == 400 and response.json()['message'] == OrderData.MESSEGE_TEXT_400 | ||
|
|
||
| @allure.title('Test UnSuccessful two login creation with the same data') | ||
| @allure.description('Если создать пользователя с логином, который уже есть, возвращается ошибка.') | ||
| def test_create_two_courier_with_same_login_data(self, generate_two_courier_with_same_login_data): | ||
| response = generate_two_courier_with_same_login_data | ||
| assert response.status_code == 409 and response.json()['message'] == OrderData.MESSEGE_TEXT_409 |
There was a problem hiding this comment.
Необходимо исправить в тестах этого модуля: создание курьера - это шаг теста (кроме теста созданием двух курьеров с одними данными, там в шаге теста останется шаг с повторным созданием), а сейчас они фактически выполняются в предусловиях. Для этих тестов необходимо логику с созданием курьера вынести в шаги теста
tests/test_order_body.py
Outdated
| @allure.title('Test Order Body') | ||
| @allure.description('Тестирование, что в тело ответа возвращается список заказов.') | ||
| def test_order_body(self): | ||
| response = requests.get(f'{data.Url.MAIN_URL}{data.Url.GET_LIST_ORDERS_URL}') |
There was a problem hiding this comment.
Нужно исправить здесь и далее: необходимо сделать allure-аннотации для каждого метода отправки запроса. При такой реализации лучше всего подходит контекст-менеджер with allure.step
tests/test_login.py
Outdated
| response = get_login_id | ||
| assert response.status_code == 200 | ||
|
|
||
| @allure.title('Test UnSuccessful courier login without necessary data') | ||
| @allure.description('Пытаемся войти без пароля и проверяем ответ API') | ||
| def test_login_courier_without_password(self,get_login_withot_password): | ||
| response = get_login_withot_password | ||
| assert response.status_code == 400 | ||
|
|
||
| @allure.title('Test Error after login incorrect data') | ||
| @allure.description('Система вернёт ошибку, если неправильно указать логин или пароль;') | ||
| def test_login_with_icorrect_password(self,get_login_with_incorrect_password): | ||
| response = get_login_with_incorrect_password | ||
| assert response.status_code == 404 | ||
|
|
||
| @allure.title('Test UnSuccessful courier login without necessary data') | ||
| @allure.description('Пытаемся войти без пароля и проверяем ответ API') | ||
| def test_login_courier_without_password(self,get_login_withot_password): | ||
| response = get_login_withot_password | ||
| assert response.json()['message'] == OrderData.MESSEGE_INC_LOGIN | ||
|
|
||
| @allure.title('Test UnSuccessful login with unreal data') | ||
| @allure.description('Если авторизоваться под несуществующим пользователем, запрос возвращает ошибку') | ||
| def test_login_with_unreal_data(self, get_login_with_unreal_data): | ||
| response = get_login_with_unreal_data | ||
| assert response.json()['message'] == OrderData.MESSEGE_NOT_FIND_LOGIN and response.status_code == 404 | ||
|
|
||
| @allure.title('Test Successful login return id') | ||
| @allure.description('Успешный запрос возвращает id') | ||
| def test_login_with_unreal_data(self, get_login_id): | ||
| response = get_login_id | ||
| assert response.json()["id"] != 0 |
There was a problem hiding this comment.
Необходимо исправить: в некоторых тестах отсутствуют проверки кода ответа, а в других - тела. Необходимо проверять и то, и другое
tests/test_login.py
Outdated
| @allure.title('Test Successful login') | ||
| @allure.description('Тут создаем логин, входим на сайт, проверяем код ответа') | ||
| def test_courier_authorization(self,get_login_id): | ||
| response = get_login_id |
There was a problem hiding this comment.
Необходимо исправить в тестах этого модуля: похожая ситуация, как с тестами создания курьера. В фикстурах следует размещать только шаги предусловия (такие как создания курьера для повторной регистрации курьера и оформления заказа от авторизованного пользователя), а шаги теста должны оставаться в тесте
No description provided.