Skip to content

Comments

Тестирование API#1

Open
Alexey3234 wants to merge 5 commits intomainfrom
develop
Open

Тестирование API#1
Alexey3234 wants to merge 5 commits intomainfrom
develop

Conversation

@Alexey3234
Copy link
Owner

No description provided.

login_resp = login_courier(login_pass[0], login_pass[1])
courier_id = login_resp.json()["id"]
yield {"login": login_pass[0], "password": login_pass[1], "id": courier_id}
delete_courier(courier_id)
Copy link

Choose a reason for hiding this comment

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

Отлично: база очищается после тестирования


@allure.title("Успешное создание курьера через фикстуру")
@allure.step("Тест успешного создания курьера через фикстуру")
def test_create_courier_success(self, courier):
Copy link

Choose a reason for hiding this comment

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

Нужно исправить: единственный шаг этого теста - фикстура. Мы не тестируем фикстуры, если предполагаешь что фикстура нерабочая, то как можно строить на неё другие тесты? Фикстура - это предусловие теста, состояние системы. Она не должна заменять шаги теста

assert response.status_code == 201
assert response.json() == {"ok": True}

login_resp = requests.post(Urls.LOGIN_COURIER, data={
Copy link

Choose a reason for hiding this comment

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

Нужно исправить: есть фикстура для удаления курьеров, нужно везде использовать один и тот же подход к проектированию

@allure.step("Тест создания заказа: {description}")
def test_create_order_with_colors(self, color, description, cleanup_order):
order_data = BASE_ORDER_DATA.copy()
if color:
Copy link

Choose a reason for hiding this comment

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

Нужно исправить: в тестах мы не хотим иметь ветвлений, мы стремимся создать линейные предсказуемые сценарии

assert "orders" in response_json, "В ответе должно быть поле 'orders'"
assert isinstance(response_json["orders"], list), "Поле 'orders' должно быть списком"

if response_json["orders"]:
Copy link

Choose a reason for hiding this comment

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

Нужно исправить: убрать ветвление

assert response.json() == {"ok": True}

# Проверяем, что курьер может авторизоваться
login_response = login_courier(payload["login"], payload["password"])
Copy link

Choose a reason for hiding this comment

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

нужно исправить: тест неатомарный, после ассерта не должно быть новых шагов и ассертов, в каждом тесте проверяем что-то одно

assert response.json() == {"ok": True}

# Проверяем, что курьер может авторизоваться
login_response = login_courier(payload["login"], payload["password"])
Copy link

Choose a reason for hiding this comment

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

тест неатомарный

Copy link

Choose a reason for hiding this comment

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

Нужно исправить: тест неатомарный, в каждом тесте тестируем одно состояние системы - например успех создания курьера ИЛИ возможность авторизации такого курьера. после ассерта не должно быть других шагов и новых ассертов.

В сценарии просили проверить возможность создания

assert response.json() == {"ok": True}

# Проверяем, что курьер может авторизоваться
login_response = login_courier(payload["login"], payload["password"])
Copy link

Choose a reason for hiding this comment

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

тест неатомарный

assert response.json() == {"ok": True}

# Проверяем, что курьер может авторизоваться
login_response = login_courier(payload["login"], payload["password"])
Copy link

Choose a reason for hiding this comment

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

Нужно исправить: тест неатомарный, в каждом тесте тестируем одно состояние системы - например успех создания курьера ИЛИ возможность авторизации такого курьера. после ассерта не должно быть других шагов и новых ассертов.

В сценарии просили проверить возможность создания

assert response.status_code == 201
assert response.json() == {"ok": True}

login_response = login_courier(random_courier_data["login"], random_courier_data["password"])
Copy link

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