Как писать тесты для selenium

Как писать тесты для selenium

Структура тестов

  • В папке www/selenium_tests/ лежат базовые классы для тестов:
    • basic_selenium_test.py - базовый класс теста на основе selenium для фронтенда без авторизации.
    • admin_selenium_test.py - базовый класс теста на основе selenium для фронтенда с авторизацией.
  • В папках www/<frontend>/tst лежат:
    • selenium_test_main.py - файл для запуска тестов для данного фронтенда. Скрипт запускается с параметром host

    • test_<test_name_with_underscores>.py - отдельные тесты

Пример класса-теста

Для примера рассмотрим тест для одного из админов. 

import unittest
import sys
sys.path.append('../../selenium_tests/')
from admin_selenium_test import AdminSeleniumTest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
class ExampleTest(AdminSeleniumTest):
    def test1(self):
        URL  = self.getUrl('/')                           # Специальный метод для получения абсолютных ссылок из относительных 
        self.driver.get(URL)                              # Запрашиваем страницу в браузере методом GET
        self.driver.implicitly_wait(30)                   # Задаем таймаут ожидания веб-страницы в секундах
        ID_element = self.driver.find_element_by_id('ID') # Ищем элемент по id
        IDtype = ID_element.get_attribute('type')         # Получаем значение атрибута элемента
        self.assertEquals(IDtype,'text')                  # Проверяем значение

Подключение класса-теста

В качестве примера рассмотрим существующий файл www/nm-admin/tst/selenium_test_main.py и подключение к нему PaperFileTypeTest.

import unittest
import sys
from test_paper_file_type import PaperFileTypeTest # Импорт класса-теста
from basic_selenium_test import BasicSeleniumTest
def main(host):
suite = unittest.TestSuite()
suite.addTest(BasicSeleniumTest.parametrize(PaperFileTypeTest, param=host)) # Параметризация класса теста адресом хоста
unittest.TextTestRunner(verbosity=2).run(suite)

if __name__ == '__main__':
host = sys.argv[1]
main(host)

Запуск тестов

Если на машине есть графический интерфейс пользователя

cd www/nm-admin/tst

python selenium_test_main.py http://nm-admin/

Если на машине есть только консоль

cd www/nm-admin/tst
xvfb-run -a python selenium_test_main.py http://nm-admin/

 

Ссылки

  1. https://selenium-python.readthedocs.org/
  2. http://habrahabr.ru/post/250921/
  3. http://www.seleniumhq.org/docs/