Skip to content

Comments

Develop#1

Open
sgtraf wants to merge 29 commits intomainfrom
develop
Open

Develop#1
sgtraf wants to merge 29 commits intomainfrom
develop

Conversation

@sgtraf
Copy link
Owner

@sgtraf sgtraf commented Apr 20, 2025

No description provided.

G Sh added 20 commits April 18, 2025 16:30
data.py Outdated
Comment on lines 2 to 10
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 - Трекинговый номер заказа

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно лучше: адреса лучше вынести из модуля тестов во внешний (например, urls). Они могут измениться, что затруднит поддержку тестов, плюс будет легче поддерживать несколько стендов если использовать конкатенацию адресов с базовым (MAIN_URL)

login_pass = []

# отправляем запрос на регистрацию курьера и сохраняем ответ в переменную response
response = requests.post('https://qa-scooter.praktikum-services.ru/api/v1/courier', data=body)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно исправить здесь и далее: необходимо сделать allure-аннотации для каждого метода отправки запроса. При такой реализации лучше всего подходит контекст-менеджер with allure.step

Comment on lines 5 to 52
@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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Необходимо исправить в тестах этого модуля: создание курьера - это шаг теста (кроме теста созданием двух курьеров с одними данными, там в шаге теста останется шаг с повторным созданием), а сейчас они фактически выполняются в предусловиях. Для этих тестов необходимо логику с созданием курьера вынести в шаги теста

@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}')

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно исправить здесь и далее: необходимо сделать allure-аннотации для каждого метода отправки запроса. При такой реализации лучше всего подходит контекст-менеджер with allure.step

Comment on lines 9 to 40
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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Необходимо исправить: в некоторых тестах отсутствуют проверки кода ответа, а в других - тела. Необходимо проверять и то, и другое

@allure.title('Test Successful login')
@allure.description('Тут создаем логин, входим на сайт, проверяем код ответа')
def test_courier_authorization(self,get_login_id):
response = get_login_id

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Необходимо исправить в тестах этого модуля: похожая ситуация, как с тестами создания курьера. В фикстурах следует размещать только шаги предусловия (такие как создания курьера для повторной регистрации курьера и оформления заказа от авторизованного пользователя), а шаги теста должны оставаться в тесте

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants