Хотим загрузить/получить настройки из внешнего файла в момент выполнения функции "ЗаполнитьНаборТестов"
Предварительно
- [V] Вы используете [последнюю версию продукта]
- [V] Вы проверили [Известные проблемы при тестировании]
Описание
Хотим загрузить/получить настройки из файла на диске при выполнении теста в функции "ЗаполнитьНаборТестов". Этот файл изначально лежит рядом с обработкой теста (или известен относительный путь относительно текущей обработки).
Шаги для воспроизведения
нет
Ожидаемое поведение: [ Что вы хотите получить? ]
Видим два варианта:
-
Мы хотим загрузить из внешнего макета в формате (mxl) настройки. Эти настройки находятся рядом с текущим размещением файла обработки теста, т.е. хотим создать параметризированный тест с настройками из макета без необходимости каждый раз править обработку.
-
Добавить в командную строку опцию доп. данные, к примеру, ЗагрузчикДополнительныеДанные %путь%\настройки.mxl, и загружать эту таблицу заранее, а в функцию ЗаполнитьНаборТестов передавать дополнительным параметром.
В файле настроек хранится таблица с данными для вариантов запуска.
Текущее поведение: [ Что происходит в действительности? ]
Нет возможности получить настройки из файла. Использовать макеты прикрепленные в обработку не удобно.
Как мы вышли из ситуации сейчас
В плагине "ЗагрузчикФайла" в модуле объекта добавили для переменной ЗагружаемыйПуть параметр Экспорт.
Прикладывайте скриншоты
Также приветствуется описание в формате Gherkin
Функционал <информация о текущем положении в каталоге загружаемого теста вариант1>
Как <?>
Я хочу <упростить создание тестов>
Контекст
Дано <xUnitFor1C>
И <8.3.11>
Сценарий <ожидаемое поведение>
Допустим существует обработка теста и настройки для теста в каталоге <c:\тесты\тест1.epf> и <c:\тесты\тест1_настройки.mxl>
Когда вызывается функция <ЗаполнитьНаборТестов>
Тогда получаем путь из переменной <НаборТестов.ЗагружаемыйПуть> и загружаем настройки для параметризированного теста.
в ADD есть ишуз с решением https://github.com/silverbulleters/add/issues/74 все просто
@ivanov660 Закрываем?
-
Посмотрел предлагаемый вариант решения, не подходит. Он срабатывает при выполнении теста. Мы же хотели, чтобы он срабатывал в функции "ЗаполнитьНаборТестов".
-
По коду происходит следующая последовательность действий: а) Открыли xddRunner и нажимаем кнопку загрузить тест из файла. б) Указываем путь к тесту "Тест1.epf" в) Вызывается плагин "ЗагрузчикФайла.epf" г) xddRunner вызывает функцию модуля обработки "ЗагрузитьТестыВНовомФормате()" плагина "ЗагрузчикФайла.epf" д) В функции "ЗагрузитьТестыВНовомФормате()" идет вызов процедуры модуля объекта "Тест1.epf" "ЗаполнитьНаборТестов()" !!!! вот тут мы бы хотели знать путь. е) Рисуется дерево тестов и т.д. ж) жмем выполнить тест и выполняется процедура
"ЗаполнитьСвойствоПриНаличии(Контекст, "ПутьКФайлуПолный", ДочернийУзел.Путь);"
На шаге "д" мы используем переменную обработки "ЗагрузчикФайла.epf" ЗагружаемыйПуть и для нее добавили признак экспорта. И мы получаем значение ее внутри нашей обрабокти.
Перем КэшПостроительДереваТестов;
Перем ЗагружаемыйПуть ЭКСПОРТ; // ппк чтобы получить путь каталога файла загружаемого
Перем КонтейнерТестов;
Перем ТекущаяГруппа;
- Зачем нам это нужно. Цель - упростить создание юнит тестов. К примеру, у нас есть каталог рядом с обработкой, в котором есть набор файлов. И при загрузке теста, мы хотим создать столько тестовых случаев, сколько этих файлов. Это при анализе результатов выполнения тестов поможет понять, какой вариант не сработал. Пример, кода:
Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт
Файл = новый Файл(НаборТестов.ЗагружаемыйПуть);
ПутьКаталог = файл.Путь+"/"+ИмяКаталогаМакетов;
МассивФайлов = НайтиФайлы(ПутьКаталог,"*.mxl",Истина);
Для каждого Файл из МассиВФайлов Цикл
ИмяТеста="Тест_ЗагрузитьДанныеИзМакета";
НаборТестов.Добавить(ИмяТеста, НаборТестов.ПараметрыТеста(Файл.ПолноеИмя,Файл.Имя), "Загрузить макет: "+Файл.Имя);
КонецЦикла;
КонецПроцедуры
В результате мы увидим в дереве тестов, следующий список:
Папка
ЗагрузитьМакеты
Загрузить макет: файл1.mxl
Загрузить макет: файл2.mxl
Это как раз один из case-ов про который я рассказывал на infostart event 2017, когда был раздел про создание юнит тестов.
@ivanov660 Ага, кейс понятен и важен.
Устроит вариант, когда
"ЗаполнитьСвойствоПриНаличии(Контекст, "ПутьКФайлуПолный", ПутьФайла);"
будет выполняться перед заполнением набора тестов
?
@ivanov660 А вообще моя рекомендация - использовать проектные пути.
т.е.
- задавать каталог проекта при запуске из командной строки
- запуск 1С - сложная собираемая строка запуска, хотя она у Вас наверняка реализована уже в ваших инструментах :)
- запуск через vanessa-runner - рекомендую - проще всего.
- затем этот каталог будет в КонтекстЯдра.Объект.КаталогПроекта
- можно строить относительные пути и получать любые файлы.
В ADD реализовано.
ps я вчера кейс работы с файлами показывал на вебинаре по АДД - есть отдельная страница презентации.
- Да. Заполнение экспортной переменной "ПутьКФайлуПолный" модуля объекта обработки теста перед выполнением функции получения набора тестов хороший вариант.
- Действительно. Функционал запуска юнит-теста на xddRunner мы реализовали с точки зрения пользователя максимально прозрачно, никакой головной боли ;-) создание задания выполнения юнит-теста с 5-й минуты весь ролик идет 9 минут, будет интересно узнать ваше мнение.
- Про структуру хранения тестов (на сколько я понял мы об одном и том же). 3.1. Мы разрабатываем и храним тесты в GIT. 3.2. Для каждой локальной машины в разрезе пользователь и компьютер в базе указывается путь к локальному каталогу GIT (сервер запускающий тесты также имеет свой локальный каталог GIT). 3.3. Все тесты в базе имеют относительный путь. 3.4. Формирование командной строки, интеграция разработчика, тестировщика или распараллеливание выполнения тестов не является проблемой. 3.5. В текущий момент существуют некоторые ограничения, но они устранимы.
@ivanov660 Реализовано в https://github.com/silverbulleters/add/issues/246 (пока в девелоп-ветке)
Рекомендую переходить к использованию именно ADD, т.к. xUnitFor1C никто не развивает, в отличие от активно развивающейся ADD !
Заполнение экспортной переменной "ПутьКФайлуПолный" модуля объекта обработки теста перед выполнением функции получения набора тестов хороший вариант.
реализовано и документировано в ADD
хорошо понял. перевели бы в архив текущий проект. текущую проблему можно закрывать. обновления закачаю с потомка)
@ivanov660 у нас здесь сообщество, и я один не могу принять решение о закрытии/архивировании проекта.
есть коллеги, которые предлагали пока не закрывать проект, возможно, они будут дорабатывать.
например, для 8.2, поддержка которого в ADD пока все-таки под вопросом
но АДД уже довольно сильно ускакал вперед :)