2gis-maps
Version:
Interactive 2GIS maps API, based on Leaflet
83 lines (59 loc) • 4.24 kB
Markdown
### Подготовка и запуск
1. Устанавливаем python
2. Устанавливаем virtualenv
```
$ pip install -U virtualenv
```
3. Готовим локальный environment
```
$ ./prepare.sh
```
Если используется PyCharm удобно добавить локальный env.
File -> Settings -> Project -> Шестеренка -> Добавить локальный env -> выбрать ./.env/bin/python2.7
4. Устанавливаем [selenium-launchers](https://github.com/bayandin/selenium-launchers):
```bash
# скачать zip-архив и распаковать куда-нибудь на свою машину
cd selenium-launchers/
./start_linux.sh (./start_mac.sh | ./start_win.sh) # запустит selenuim-сервер на порту 4455
```
5. Тесты используют шаблоны страниц. Для их генерации нужно выполнить:
```
$ ./template_render.sh
```
6. Если не поднят, поднять сервер MapsAPI
7. Запустить тесты
```
$ ./run.sh
```
Чтобы запускать только конкретные тесты, необходимо скопировать файл run.sh в run_my.sh и добавить файл,
класс и метод теста, например:
```bash
#!/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. В нем определяются черты (свойства и методы)
свойственные всем компонентам проекта.
### Code style
* Так как используется паттерн pageObject, в тестах не должно быть обращения к драйверу, за исключением пользовательских элементов (кнопки, ползунки и все что не входит в API карт)
* Для проверки кода перед коммитом рекомендуется создать или добавить в pre-commit git hook содержимое pep8-hook.sh. Для работы хука должен иметься pep8.
* Имена файлов с тестами `<название>_test.py`
* Имена классов оформляются в `CapitalizedWords`
* Имена тестовых методов `<объект тестирования>_<что тестируется>_test(self, *args, **kwargs)`
* Допускается использование нескольких assert`ов в тесте если они связаны с тестируемым функционалом
* Использовать только assert`ы contesto