Как организовать Selenium + Python тесты ?


(Дмитрий Безручко) #1

Я пытаюсь разобраться в автоматизации тестирования с использованием Selenium WebDriver + Python.
Посмотрел API, написал пару тестов - вроде все понятно - как находить элементы, ожидания, как подключать драйвера браузеров.
Но, в чем вопрос: как организовать сам код тестов и проверки ? Например, есть код:

driverff.get("http://master.test.parfumplanet.ua/parfyumeriya/muzhskaya-parfyumeriya/drifter")
check_to_basket_appearance = WebDriverWait(driverff, 10).until(EC.presence_of_element_located((By.XPATH,"//a[@class='buttonC tobasket ']")))
# Добавляем товар в корзину
to_basket_button = driverff.find_element_by_xpath("//a[@class='buttonC tobasket ']")
actions = ActionChains(driverff)
actions.click(to_basket_button).perform()

Этот тест просто скрипт вне функции, каких-либо ассертов, меня интересует какие практики обычно используются для структурирования таких тестов и проверок ? Видел в некоторых примерах использую библиотеку unittest, там каждый тест делают отдельной функцией. То есть интересует именно организация проверок в коде, обертывание их в try/except .


(Леонид Свидерский) #2

Думаю, коллеги еще накидают советов, я же дам ссылку на плейлист мой по автоматизации http://www.youtube.com/playlist?list=FLt59_pa6e9lC9ps2IZzCGiA Там есть и ответы на текущие вопросы, а также те, которые возникнут далее smile


(Mykhailo Poliarush) #3

Это у Вас один большой монолитный кусок кода, который надо разбивать на более мелкие. Ну и описывать логику с помощью DSL. Тогда код станет намного проще поддерживать. Например реализовать абстракции по:

  1. работе с данными
  2. работе с драйвером
  3. работе с элементами на странице (там же и будут ожидания)
  4. работе с частями страниц
  5. работе с логгированием
  6. работе с хранилищем локаторов
  7. работе с конфигурации и кроссплатформенным запуском

Вы без проблем можете использовать Page Object паттерн для создания тестов. Я это показывал в этом видео (смотреть с 40й минуты).

Если хотите научиться писать тесты с помощью unittest pytest или nose в связке с webdriver, то вам пригодятся вот эти ссылки:


(Mykhailo Poliarush) #4

Ах да, я еще забыл написать о докладе, который я делал некоторое время назад на эту тематику.

Easy selenium test automation on python from Mykhailo Poliarush

(Дмитрий Безручко) #5

Спасибо большое, все посмотрю и отпишу результат. Я почему-то думал, что PageObject нормально только с Java применять.


(Mykhailo Poliarush) #6

Да ладно, отлично ложиться в Python, и я скажу что все так и строят тесты на Python