Skip to content

Latest commit

 

History

History
209 lines (146 loc) · 14.1 KB

README.md

File metadata and controls

209 lines (146 loc) · 14.1 KB

1BDD для OneScript

GitHub release Тестирование GitHub Workflow Status Статус Порога Качества Покрытие Технический долг Строки кода

Vanessa open-sourceChat on Telegram vanessa_opensource_chat или oscript_library Chat on Telegram oscript_library - в этих чатах вы можете задавать любые вопросы разработчикам и активным участникам.

1bdd - инструмент для выполнения автоматизированных требований/тестов, написанных на обычном, не программном языке.

Иными словами, это консольный фреймворк, реализующий BDD для проекта OneScript. Для Windows и Linux.

Идеи черпаются из проекта Cucumber.

Основная документация находится в каталоге документации

  • в т.ч. библиотека полезных стандартных шагов
  • API продукта

Ниже краткая информация о возможностях продукта.

Командная строка запуска

oscript bdd.os <features-path> [ключи]
oscript bdd.os <команда> <параметры команды> [ключи]

Возможные команды:
	<features-path> [ключи]
	или
	exec <features-path> [ключи]
		Выполняет сценарии BDD для Gherkin-спецификаций
		Параметры:
			features-path - путь к файлам *.feature.
			Можно указывать как каталоги, так и конкретные файлы.

			-fail-fast - Немедленное завершение выполнения на первом же не пройденном сценарии

			-name <ЧастьИмениСценария> - Выполнение сценариев, в имени которого есть указанная часть
			-junit-out <путь-файла-отчета> - выводить отчет тестирования в формате JUnit.xml

	gen <features-path> [ключи]
		Создает заготовки шагов для указанных Gherkin-спецификаций
		Параметры:
			features-path - путь к файлам *.feature.
				Можно указывать как каталог, так и конкретный файл.

Возможные общие ключи:
	-require <путь каталога или путь файла> - путь к каталогу фича-файлов или к фича-файлу, содержащим библиотечные шаги.
		Если эта опция не задана, загружаются все os-файлы шагов из каталога исходной фичи и его подкаталогов.
		Если опция задана, загружаются только os-файлы шагов из каталога фича-файлов или к фича-файла, содержащих библиотечные шаги.

	-out <путь лог-файла>
	-debug <on|off> - включает режим отладки (полный лог + остаются временные файлы)
	-verbose <on|off> - включается полный лог

Для подсказки по конкретной команде наберите bdd help <команда>.

Формат файла фичи

Файл фичи должен иметь расширение feature и написан согласно синтаксису языка Gherkin

Пример файла фичи

# language: ru

Функционал: Выполнение файловых операций
    Как Пользователь
    Я хочу иметь возможность выполнять различные файловые операции в тексте фич
    Чтобы я мог проще протестировать и автоматизировать больше действий на OneScript

Сценарий: Каталог проекта
    Допустим Я создаю временный каталог и сохраняю его в контекст
    И Я устанавливаю временный каталог как рабочий каталог
    Когда Я сохраняю каталог проекта в контекст
    Тогда Я показываю каталог проекта
    И Я показываю рабочий каталог

или

# language: ru

Функционал: Использование программного контекста
	Как Разработчик
	Я Хочу чтобы шаги разных сценариев могли обмениваться данными через програмнный контекст продукта

Сценарий: Первый сценарий

  Когда Я сохранил ключ "Ключ1" и значение 10 в программном контексте
  И я получаю ключ "Ключ1" и значение 10 из программного контекста

Сценарий: Следующий сценарий

  Тогда я получаю ключ "Ключ1" и значение 10 из программного контекста

Формат файла шагов

Это обычный os-скрипт, который располагает в подкаталоге step_definitions относительно файла фичи.

В этом файле должна быть служебная функция ПолучитьСписокШагов, которая возвращает массив всех шагов, заданных в этом скрипте.

Также внутри файла шагов могут располагаться специальные методы-обработчики (хуки) событий ПередЗапускомСценария/ПослеЗапускаСценария

Пример файла шагов

// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd

Перем БДД; //контекст фреймворка 1bdd

// Метод выдает список шагов, реализованных в данном файле-шагов
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
	БДД = КонтекстФреймворкаBDD;

	ВсеШаги = Новый Массив;

	ВсеШаги.Добавить("ЯСохранилКлючИЗначениеВПрограммномКонтексте");
	ВсеШаги.Добавить("ЯПолучаюКлючИЗначениеИзПрограммногоКонтекста");

	Возврат ВсеШаги;
КонецФункции

// Реализация шагов

// Процедура выполняется перед запуском каждого сценария
Процедура ПередЗапускомСценария(Знач Узел) Экспорт

КонецПроцедуры

// Процедура выполняется после завершения каждого сценария
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт

КонецПроцедуры

//Я сохранил ключ "Ключ1" и значение 10 в программном контексте
Процедура ЯСохранилКлючИЗначениеВПрограммномКонтексте(Знач Ключ, Знач Значение) Экспорт
	БДД.СохранитьВКонтекст(Ключ, Значение);
КонецПроцедуры

//я получаю ключ "Ключ1" и значение 10 из программного контекста
Процедура ЯПолучаюКлючИЗначениеИзПрограммногоКонтекста(Знач Ключ, Знач ОжидаемоеЗначение) Экспорт
	НовоеЗначение = БДД.ПолучитьИзКонтекста(Ключ);
	Ожидаем.Что(НовоеЗначение).Равно(ОжидаемоеЗначение);
КонецПроцедуры

API фреймворка

Есть несколько вариантов использования API фреймворка из кода реализации шагов.

Основная документация по шагам находится в каталоге документации

Стандартная библиотека

Стандартные библиотечные шаги, подключаемые автоматически для любой фичи, находятся в каталоге features/lib

  • ВыполнениеКоманд.feature - выполнение команд системы и запуск процессов
  • ФайловыеОперации.feature - создание файлов/каталогов, их копирование, анализ содержимого файлов

Основная документация по шагам находится в каталоге документации

Расширения для Visual Studio Code

Для Visual Studio Code созданы расширения, облегчающие работу с файлами фич:

  • Snippets and Syntax Highlight for Gherkin (Cucumber) - подсветка синтаксиса и автодополнение ключевых слов Gherkin.
  • Gherkin step autocomplete - автодополнение шагов в файлах фич. У этого расширения есть настройка gherkin-autocomplete.featureLibraries, которая позволяет подключить внешние по отношению к проекту библиотеки шагов (например, установленную вместе с 1bdd). По Shift+F12/Shift+Alt+F12 можно перейти к реализации текущего шага - если она есть в текущем проекте и/или внешних библиотеках.