Создаём новые шаги
Генерация обработок, реализующих шаги
Вывод текста модуля, вместо генерации внешней обработки
Доступность шагов из других сценариев в том же каталоге
Добавляем собственные шаги в форму выбора известных шагов (библиотечных шагов)
Создаём собственные библиотеки шагов
Указание путей к своим библиотекам
Где лучше располагать свои библиотеки?
Преобразуем новые шаги в простейшую библиотеку
Экспортные сценарии
Создаём и используем первые шаги, реализованные через экспортные сценарии
Игнорирование секции “Контекст” экспортного сценария при исполнении реализуемых им шагов
Исключаем экспортные сценарии из исполняемых с помощью тегов
Размещаем экспортный сценарий в собственной библиотеке шагов
Как передать таблицу в качестве параметра шага, реализуемого экспортным сценарием?
Практические примеры
Асинхронный шаг удаления файла с контролем успешности операции
Типовой шаг ожидания закрытия окна как образец асинхронного шага
Реализуем наш шаг удаления файла
Исполнение произвольного кода на сервере 1С
Экспортный сценарий: открытие формы последнего проведенного документа в тест-клиенте
Данная публикация, в отличе от трёх предыдущих, предназначена в первую очередь для разработчиков. Для практического применения информации, приведенной здесь, потребуются навыки программирования и реализации принципов переиспользования кода. Для аналитиков и QA-инженеров важной может оказаться информация о том, что возможности Vanessa-ADD с легкостью могут быть расширены под потребности проекта силами программистов и совсем не обязательно оставаться в рамках стандартных возможностей фреймворка. При этом возможность обновления фреймворка не теряется.
По информации от разработчиков параллельного проекта Vanessa-Automation https://github.com/Pr-Mex/vanessa-automation почти вся информация, приведённая здесь, является базовой (унаследованной от https://github.com/silverbulleters/vanessa-behavior) и справедлива также для этого проекта.
На примерах из прошлой публикации можно было увидеть, что далеко не всегда шаги встроенной в Vanessa-ADD библиотеки позволяют эффективно решать возникающие задачи, а для некоторых нужных операций во встроенной библиотеке ещё нет шагов. Часть связанных с этим ограничений можно обойти за счет шага выполнения произвольного кода на языке платформы 1С. Но есть и более эффективные пути для решения этой проблемы:
1) Создание собственных шагов и их реализация в автоматически генерируемых внешних обработках
2) Создание собственных шагов за счет экспортных сценариев, когда исполнение шага приводит не к вызову экспортного метода внешней обработки, а к поочерёдному выполнению шагов из другого сценария.
3) Объединение собственных шагов в библиотеки, что позволяет повторно использовать их уже не в одном, а в нескольких проектах.
Более того, эти возможности сближают Vanessa-ADD с аналогичными фреймворками для других платформ, такими как JBehave и Cucumber. Ведь в них именно программирование является средством реализации исходных шагов BDD-сценария. В отличии от инструментов для 1С, которые по-настоящему стремятся нас баловать ))
Сначала мы углубимся в рассмотрение механизмов Vanessa-ADD на простейших примерах, без стремления сразу увидеть прикладную пользу. Информация будет носить “академический” характер. Это позволит сосредоточиться на сути механизмов, а не на объемных листингах кода 1С или фича-файлов. А в конце публикации будут приведены практические примеры, которые позволят увидеть прикладную пользу и потенциал рассмотренных механизмов. Чтобы не копировать текст и не перепечатывать его со скриншотов можно воспользоваться репозиторием https://github.com/VladimirLitvinenko84/DevelopingAndTestingWithVanessa.
Создаём новые шаги
Генерация обработок, реализующих шаги
В публикации, посвященной обзору интерфейса Vanessa-ADD мы видели, как ведет себя обработка bddRunner, встречая в сценарии шаг, которого нет во встроенной библиотеке шагов:


Этот шаг выделяется оранжевым цветом. Так Vanessa-ADD сообщает нам, что шаг воспринят как новый и пока неизвестный ей. Включив видимость соответствующих колонок мы можем увидеть, что путь к реализующей его внешней обработке не заполнен. Такое отображение шага можно увидеть, например, если мы отпечатались при написании шага встроенной библиотеки. Или неправильно разбили сценарий на группы шагов, из-за чего высокоуровневые шаги были восприняты как неизвестные исполняемые шаги.
Однако это не просто сигнал об ошибке. Это также сигнал о том, что при желании мы можем автоматически создать реализацию этого нового шага в виде внешней обработки и её экспортного метода. После чего Vanessa-ADD уже сможет получить всю необходимую для его исполнения информацию. При этом сигнатура метода становится известна ещё до создания внешней обработки. Параметры шага определяются как числовые литералы или слова, заключенные в двойные или одинарные кавычки. Они же становятся параметрами реализующего шаг метода. А имя этого метода складывается из текста шага после удаления из него первого ключевого слова Gherkin и всех параметров.
То есть записав шаг в виде
И Это новый шаг с параметром "Парам 1", и параметром 'Парам 2' и параметром 15
мы получим сигнатуру соответствующего ему метода
ЭтоНовыйШагСПараметромИПараметромИПараметром(Парам01, Парам02, Парам03)
И если мы действительно хотим создать новый шаг, то сделать это можно нажав на кнопку “Создать и обновить шаблоны обработок” на вкладке “Генератор EPF”

Если флаги-настройки выставлены по умолчанию, то её нажатие приводит к созданию подкаталога step_definitions в том же каталоге, в котором находится файл со сценарием. В этом каталоге автоматически создаётся внешняя обработка с основной управляемой формой (за это отвечает флаг “Генерировать управляемую форму”).
Если каталог step_definitions уже был создан ранее, то он не персоздаётся. Все файлы в нём сохраняются или обновляются, при необходимости создать реализацию для ещё одного нового шага.

Сгенерировав внешнюю обработку и перезагрузив сценарий мы увидим, что Vanessa-ADD обнаружила обработку, которая реализует этот шаг :

В данном примере примере у нас было два неизвестных шага. Теперь в созданной внешней обработке находятся описания и реализации этих шагов, которые использует Vanessa-ADD при их загрузке и исполнении. Откроем эту обработку, а в ней основную управляемую форму:

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

Далее модуль формы содержит методы, реализующие новые шаги - содержащие их исполняемый код:

При создании внешней обработки в эти методы были помещены строки, вызывающие исключения со специальным тек
Вступайте в нашу телеграмм-группу Инфостарт