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