Comments 7
Кликбейтный заголовок: в широком смысле, "автоматизаторами" называют тех, кто автоматизирует бизнес
assert response.status_code == OK
Добавлю, что лучше использовать assertEqual
(или эквивалент в вашем тест фреймворке):
assertEqual(response.status_code, OK)
Тогда упавший тест сразу покажет реальное значение. Удобно группировать упавшие тесты. Если один и тот же тест иногда падает с Service Unavailable, а иногда с Unauthorized, то это скорее всего разные баги.
А иногда по неправильному значение можно сразу понять, что случилось, без заглядывается в логи.
Да, согласен - assertEqual
или матчеры дают более наглядный вывод. В Python для юнитов используют unittest.TestCase.assertEqual
или либу hamcrest, которая позволяет писать тесты с читаемыми проверками
В статье показан самый базовый пример с обычным assert
, но для реальных проектов возможно стоит задуматься о каком-то централизованном решении сразу.
В первом пункте ещё можно упомянуть про soft assert или сравнение какой-то группы элементов как единое целое (например dataclass). Удобно сразу видеть в отчете, что поле логин и пароль упали на ассертах, а email прошел. В случае обычных ассертов упадет на первой же проверке.
Использование id вместо XPath и CSS очень правильный подход. К сожалению, на практике таких атрибутов у продукта зачастую не имеется вовсе, и крайне сложно добиться от разработчиков их внедрения, особенно, если разработка внешняя.
Да, в ряде проектов это дается непросто, особенно при работе с внешними командами. Но, как показывает практика, в большинстве случаев внедрить тестовые id все же можно, вопрос лишь в том, какими усилиями.
Я даже писал об этом отдельную статью: "Тестовые идентификаторы: как и где расставлять правильно". Где-то достаточно просто договориться с фронтенд-разработчиками и показать им минимальную документацию, а где-то придётся пройти через все круги бюрократии, обсуждения и "security hell". Но результат обычно стоит затраченных усилий - особенно на долгой дистанции поддержки автотестов.
15 типичных ошибок начинающих автоматизаторов (и как их избежать)