Conversation
|
|
||
| class MainPage(BasePage): | ||
| def open(self): | ||
| self.driver.get("https://qa-scooter.praktikum-services.ru/") |
There was a problem hiding this comment.
Можно лучше: url-адреса лучше хранить отдельно, они постоянно переиспользуются. Можно вынести в модуль urls
tests/test_faq.py
Outdated
| from pages.main_page import MainPage | ||
|
|
||
| @pytest.mark.parametrize("question_key", ["question1", "question2"]) | ||
| def test_faq_answer_display(driver, question_key): |
There was a problem hiding this comment.
Нужно исправить: Для корректного запуска тестов необходимо код с шагами теста поместить в тестовый метод (нейминг начинается с test_), а метод - в тестовый класс (нейминг начинается с Test). Модуль с тестами также должен начинаться с test_*. Необходимо привести к такому формату все модули внутри пакета tests
There was a problem hiding this comment.
Не исправлено. Необходимо не только поправить нейминг модулей, но и поместить тестовые функции в классы
tests/test_faq.py
Outdated
| import pytest | ||
| from pages.main_page import MainPage | ||
|
|
||
| @pytest.mark.parametrize("question_key", ["question1", "question2"]) |
There was a problem hiding this comment.
Необходимо исправить: по заданию необходимо проверить все вопросы
tests/test_order.py
Outdated
| ("Иван", "Иванов", "ул. Ленина д.1", "+79991112233"), | ||
| ("Петр", "Петров", "пр. Мира д.10", "+79994445566") | ||
| ]) | ||
| def test_order_flow(driver, name, surname, address, phone): |
There was a problem hiding this comment.
Необходимо исправить: по заданию необходимо проверить флоу заказа как через верхнюю кнопку, так и через нижнюю
tests/test_order.py
Outdated
|
|
||
| # Проверка сообщения об успешном заказе | ||
| message = order_page.get_success_message() | ||
| assert "Заказ успешно создан" in message or message == "Ваш заказ начали готовить" |
There was a problem hiding this comment.
Можно лучше здесь и далее: тестовые данные и ожидаемые ответы лучше не хранить в теле/модулях теста. Лучше вынести их в модуль data, так их будет легче поддерживать
| @@ -0,0 +1,19 @@ | |||
| import pytest | |||
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| def __init__(self, driver): | ||
| self.driver = driver | ||
|
|
||
| def find(self, locator): |
There was a problem hiding this comment.
Необходимо исправить: над каждым методом необходимо поставить allure-аннотацию step
tests/test_faq.py
Outdated
| from pages.main_page import MainPage | ||
|
|
||
| @pytest.mark.parametrize("question_key", ["question1", "question2"]) | ||
| def test_faq_answer_display(driver, question_key): |
There was a problem hiding this comment.
Не исправлено. Необходимо не только поправить нейминг модулей, но и поместить тестовые функции в классы
tests/test_order.py
Outdated
| if order_button == "top": | ||
| page.click_order_top() | ||
| else: | ||
| page.click_order_bottom() |
There was a problem hiding this comment.
Нужно исправить: использование условных блоков в теле теста лишает их атомарности. Можно попробовать, например, расширить количество параметров или их переработать дабы избежать этой ситуации
| expected_texts = { | ||
| "question1": "Сутки — 400 рублей. Оплата курьеру — наличными или картой.", | ||
| "question2": ("Пока что у нас так: один заказ — один самокат. " | ||
| "Если хотите покататься с друзьями, можете просто сделать несколько заказов — один за другим."), | ||
| "question3": ("Допустим, вы оформляете заказ на 8 мая. Мы привозим самокат 8 мая в течение дня. " | ||
| "Отсчёт времени аренды начинается с момента, когда вы оплатите заказ курьеру. " | ||
| "Если мы привезли самокат 8 мая в 20:30, суточная аренда закончится 9 мая в 20:30."), | ||
| "question4": "Только начиная с завтрашнего дня. Но скоро станем расторопнее.", | ||
| "question5": ("Пока что нет! Но если что-то срочное — всегда можно позвонить в поддержку по красивому номеру 1010."), | ||
| "question6": ("Самокат приезжает к вам с полной зарядкой. Этого хватает на восемь суток — даже если будете кататься без передышек и во сне. " | ||
| "Зарядка не понадобится."), | ||
| "question7": ("Да, пока самокат не привезли. Штрафа не будет, объяснительной записки тоже не попросим. Все же свои."), | ||
| "question8": ("Да, обязательно. Всем самокатов! И Москве, и Московской области.") | ||
| } |
There was a problem hiding this comment.
Можно лучше: во всех тестах лучше выносить тестовые данные во внешний модуль (например, data). Это позволит облегчить их поддержку
tests/test_navigation.py
Outdated
| import pytest | ||
| from pages.main_page import MainPage | ||
|
|
||
| def test_click_logo_redirects_to_homepage(driver): |
There was a problem hiding this comment.
Необходимо исправить здесь и далее: некоторые тесты всё ещё находятся вне классов
tests/test_order.py
Outdated
| if order_button_type == "top": | ||
| page.click_order_top() | ||
| elif order_button_type == "bottom": | ||
| page.click_order_bottom() | ||
| else: | ||
| pytest.fail(f"Неизвестный тип кнопки заказа: {order_button_type}") |
There was a problem hiding this comment.
Нужно исправить: использование условных блоков в теле теста лишает их атомарности. Можно попробовать, например, расширить количество параметров или их переработать дабы избежать этой ситуации (например, заменить "top" на локатор верхней кнопки оформления заказа, а "bottom" - локатор нижней и передавать их в соответствующий метод Page
No description provided.