- Устанавливаем python
- Устанавливаем virtualenv
$ pip install -U virtualenv
- Готовим локальный environment
$ ./prepare.sh
Если используется PyCharm удобно добавить локальный env. File -> Settings -> Project -> Шестеренка -> Добавить локальный env -> выбрать ./.env/bin/python2.7
- Устанавливаем selenium-launchers:
# скачать zip-архив и распаковать куда-нибудь на свою машину
cd selenium-launchers/
./start_linux.sh (./start_mac.sh | ./start_win.sh) # запустит selenuim-сервер на порту 4455
- Тесты используют шаблоны страниц. Для их генерации нужно выполнить:
$ ./template_render.sh
-
Если не поднят, поднять сервер MapsAPI
-
Запустить тесты
$ ./run.sh
Чтобы запускать только конкретные тесты, необходимо скопировать файл run.sh в run_my.sh и добавить файл, класс и метод теста, например:
#!/usr/bin/env bash
source .env/bin/activate
PYTHONPATH=$(pwd) .env/bin/lode_runner -v tests/firm_callout_test.py:FirmCallout.firm_photo_test --with-xunit
exit 0;
- В пакете classes хранятся компоненты (сomponents), исключения (exceptions), утилиты (util)
- В пакете config хранится конфиг для contesto
- В пакете tests хранятся тесты и пакеты тестов
Бывает необходимо поднять и обработать исключение. Все типы исключений для карты, взаимодействия с WebApi и т.д. описываются в classes.exceptioins.exceptions. Наследуются от базового типа исключений contesto, а затем от базового типа исключения API карт.
В данном пакете описываются утилиты и базовые классы тестов для API карт. На данный момент там содержится базовый класс для тестов MapsAPIBaseTest унаследованный от UnittestContestoTestCase, с переопределенным методом setUp.
В данном пакете описываются компоненты страницы, страница и базовой компонент. Базовый компонент наследуется от класса BaseComponent contesto. В нем определяются черты (свойства и методы) свойственные всем компонентам проекта.
- Так как используется паттерн pageObject, в тестах не должно быть обращения к драйверу, за исключением пользовательских элементов (кнопки, ползунки и все что не входит в API карт)
- Для проверки кода перед коммитом рекомендуется создать или добавить в pre-commit git hook содержимое pep8-hook.sh. Для работы хука должен иметься pep8.
- Имена файлов с тестами
<название>_test.py
- Имена классов оформляются в
CapitalizedWords
- Имена тестовых методов
<объект тестирования>_<что тестируется>_test(self, *args, **kwargs)
- Допускается использование нескольких assert`ов в тесте если они связаны с тестируемым функционалом
- Использовать только assert`ы contesto