Как писать тесты для 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/ |
---|
Ссылки
- https://selenium-python.readthedocs.org/
- http://habrahabr.ru/post/250921/
- http://www.seleniumhq.org/docs/
, multiple selections available,