Уже который день меня выбешивает одна проблема. Суть вот в чём. Имеется автотест на PyTest, для проверки сайдбара на одном сайте.
Алгоритм прост:
- Открываю сайт,
- Авторизуюсь,
- Перехожу на первую попавшуюся страницу,
- В сайдбаре страницы открываю вертикальное выпадающее меню и кликаю на один из пунктов (берётся из массива),
- На открывшихся страницах проверяю сайдбар на наличие меню, на возможность свернуть-развернуть, на всплывающие подсказки, на ширину и прочее-прочее.
И всё вроде было нормально, когда эти действия шли в обычном цикле for. Однако, у цикла был жирный минус, который всё портил.
Представь, что один из пунктов меню пропал. Или на одной из страниц сайдбар оказался битый. В этом месте цикла тест падал и остальные пункты меню уже не проверялись.
Было найдено более корректное решение — параметризованный тест. Массив такому тесту передаётся в виде параметра и тест запускается до тех пор, пока не пройдёт массив до конца.
Т.е. по сути это тот же цикл, но каждая итерация в нём — отдельный тест, с отдельным результатом выполнения. Таким образом я вижу в каких разделах сайта не всё в порядке с сайдбаром.
Вот кусок кода с примером.
items_text = ["текст 1", "текст 2", "текст 3"] @allure.feature('Функциональное тестирование') @pytest.mark.parametrize("item_text", items_text) @allure.story("Общие функции сайдбара в разделе") def test_sidebar_in(pages, item_text): page = SidebarElements(pages.browser) with allure_step(f"Шаг 5: Проверка сайдбара в разделе '{item_text}'"): print(f" Раздел: '{item_text}'") ................
Вот тут и появилась новая проблема. Дело в том, что параметры из массива PyTest отображает в отчёте. А поскольку пункты меню на русском, он заменяет кириллицу на эскейп-последовательности. Получаются совершенно неинформативные строки. И это раздражает всякий раз.
Слышал, что в PyTest 2.9 такой проблемы не было, но начиная с 3.0 — появилась.
Я кучу времени угрохал на то, чтобы найти решение. Баг известный, и достаточно давно, но в сети не попадалось ничего кроме стенаний пользователей. Решение нашёл мой коллега.
Устранить проблему PyTest с отображением кириллицы в отчётах оказалось достаточно легко, если знать как.
Как исправить отображение кириллицы в отчётах PyTest?
- В корень проекта кладём файлик pytest.ini
- В фале пишем вот такой текст:
[pytest] disable_test_id_escaping_and_forfeit_all_rights_to_community_support = true
- Сохраняем.
- ??????
- PROFIT!
Вот так отчёт выглядит теперь.
Совсем другое дело. И в ходе выполнения теста текущие шаги тоже корректно отображают кириллицу.
Флаг «disable_test_id_escaping_and_forfeit_all_rights_to_community_support» экспериментальный, но работает уже несколько месяцев. Т.е. типа временный, но прижился вроде-как.
А с вами был Доктор Лексиум.
До новых постов.))
Напишите комментарий