#python #selenium #testing #pytest #python-unittest
Вопрос:
Я достиг той точки в своем изучении Python, когда написал сценарий, который частично основан на использовании Selenium для очистки динамически создаваемой веб-страницы (для которой запросы и BeautifulSoup не имеют отношения).
Как, однако, я должен протестировать эти части своего сценария?
Есть ли для этого специальная библиотека? Должен ли я разрабатывать поддельный веб-сайт (!) ? Или тот факт, что скрипт работает, делает ненужным его тестирование?
PS: Я понимаю, что Selenium изначально создавался для целей разработки, а не для создания веб-сайтов.
Ответ №1:
Взгляните на TestNG и Огурец вместе с отчетами о Жасмине. Тот факт, что ваш сценарий работает, должен быть свидетельством на данный момент, но для полномасштабного отчета о тестировании вы должны использовать вышеупомянутые инструменты.
Более того, почему бы не передать исходный код страницы, полученный из Selenium
, в BeautifulSoup
и позволить ему позаботиться о части очистки. Подрыв BeautifulSoup
и Requests
для их возможностей трудно переварить.
Комментарии:
1. TestNG предназначен для Java, а не для Python. OP, взгляните на unittest или pytest, если вы хотите добавить некоторые возможности тестирования поверх вашего selenium
2. @CodeWalker: Я отредактировал свой пост, чтобы отразить тот факт, что веб-страница, которую я очищаю, динамически создается в виде прокрутки, и ее содержимое не может быть передано запросам и BeautifulSoup, возможности которых в противном случае очень ценятся. Таким образом, тот факт, что я полагаюсь на Селен.
3. @JD2775: Действительно, TestNG, похоже, здесь не помогает. Не могли бы вы подробнее рассказать о том, как можно использовать unittest или pytest в моей ситуации?
4. @CygnusX вы можете просто использовать их для добавления тестовой платформы вокруг ваших методов selenium. Например, если вы ожидаете, что определенное действие Selenium вернет X, вы можете написать тест на это и использовать методы unittest Assert, чтобы убедиться, что X будет возвращен. Все дело в ожидаемом результате по сравнению с фактическим результатом. Unittest встроен в Python, Pytest-это еще один тестовый фреймворк, который вы могли бы выбрать вместо этого
5. Или, если вас не интересуют конечные данные и проверка их правильности, вы можете просто добавить утверждения о том, что веб-элементы присутствуют, когда вы нажимаете на них? Или отправить ключи? С другой стороны, если бы их не было, ваш сценарий все равно провалился бы.