Wellbehaved¶
Обертка вокруг питоновского проекта behave (который, в свою очередь, является портом Cucumber из Ruby), добавляющая возможность написания плагинов и шаблонизацию с использованием Jinja2.
Установка¶
Установите пакет wellbehaved
со стандартного PyPi-сервера “БАРС Груп”:
pip install wellbehaved -i https://<PyPi_сервер_БАРС_Груп>/simple
Запуск¶
Запустить тестирование можно с помощью обычной команды:
./wellbehaved --cfg-file cfg.yaml --var-file vars.py -- --lang ru
Настройки¶
Для удобства передачи опций behave
, используется следующая схема:
wellbehaved [--cfg-file <файл конфигурации>] [--var-file <файл с переменными>] -- [опции behave]
Опции командной строки:
–cfg-file <имя файла>
Подключение YAML-файла с настройками плагинов.
–var-file <имя файла>
Python-файл с переменными для шаблонизатора. Весь словарь переменных и функций, полученный в ходе исполнения этого файла будет передан в качестве контекста Jinja2, после чего будет использоваться для подстановки переменных в к2аждом feature-файле.
Плагины¶
redmine¶
Пропуск выполнения сценариев согласно информации из Redmine.
Этот плагин позволяет пропускать выполнения сценария (в результатах он будет отображаться как *skipped), если статус связанной со сценарием задачи соответствует одному из заданных.
Настройки:
- host - адрес сервера Redmine;
- user - имя пользователя;
- pass - пароль;
- statuses - разделенный запятыми список наименований статусов задач.
Сценарий связывается с задачей через тэг формы @redmine{{taskID}}:
@redmine12345
Scenario: hello, world!
coverage¶
Интеграция со стандартным coverage.
Этот плагин собирает и отображает информацию о покрытии кода шагов.
Настройки:
- type - формат сохранения собранной информации:
- report - стандартный текстовый файл с отчетом;
- html - папка со сгенерированным HTML-представлением отчета.
- output - имя файла/папки с результатами сбора информации.
Пример использованиия¶
Предположим, что пока задача 12345 находится в статусах “Разработка” и “Анализ” нам нет смысла прогонять сценарий тестирования личной страницы. Так как имя пользователя используется во многих тестовых файлах одновременно и со временем может изменится, было решено сделать его переменным.
Файл с переменными:
#coding: utf-8
username = u'Тестовый Пользователь'
Файл конфигурации:
plugins:
redmine:
host: http://task.bars-open.ru
user: user1
pass: pass1
statuses: ['Разработка', 'Анализ']
enabled_plugins: ['redmine']
Feature-файл:
Функция: работа с рабочим столом
@redmine12345
Сценарий: открытие личной страницы
Дано пользователь "{{username}}"
И пользователь вошел в систему
Когда в меню выбрана "Личная страница"
То открывается страница с иконками
Запуск:
./wellbehaved --cfg-file cfg.yaml --var-file vars.py -- --lang py
Контакты¶
С вопросами по доработкам, применению и с сообщениями об ошибках пишите на borisov@bars-open.ru
Благодарности¶
- Юле Касимовой (kasimova@bars-open.ru) - самоотверженное участие в тестировании продукта
- Сергею Чипиге (svchipiga@bars-open.ru) - нахождение багов
- Вадиму Малышеву (vvmalyshev@bars-open.ru) - продавливании идеи изучения концепций BDD