Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Хотим загрузить/получить настройки из внешнего файла в момент выполнения функции "ЗаполнитьНаборТестов" #785

Open
ivanov660 opened this issue Jun 29, 2018 · 12 comments
Labels
ADD ADD, Vanessa-ADD https://github.com/silverbulleters/add question

Comments

@ivanov660
Copy link

Предварительно

  • [V] Вы используете [последнюю версию продукта]
  • [V] Вы проверили [Известные проблемы при тестировании]

Описание

Хотим загрузить/получить настройки из файла на диске при выполнении теста в функции "ЗаполнитьНаборТестов". Этот файл изначально лежит рядом с обработкой теста (или известен относительный путь относительно текущей обработки).

Шаги для воспроизведения

нет

Ожидаемое поведение: [ Что вы хотите получить? ]

Видим два варианта:

  1. Мы хотим загрузить из внешнего макета в формате (mxl) настройки. Эти настройки находятся рядом с текущим размещением файла обработки теста, т.е. хотим создать параметризированный тест с настройками из макета без необходимости каждый раз править обработку.

  2. Добавить в командную строку опцию доп. данные, к примеру, ЗагрузчикДополнительныеДанные %путь%\настройки.mxl, и загружать эту таблицу заранее, а в функцию ЗаполнитьНаборТестов передавать дополнительным параметром.

В файле настроек хранится таблица с данными для вариантов запуска.

Текущее поведение: [ Что происходит в действительности? ]

Нет возможности получить настройки из файла. Использовать макеты прикрепленные в обработку не удобно.

Как мы вышли из ситуации сейчас

В плагине "ЗагрузчикФайла" в модуле объекта добавили для переменной ЗагружаемыйПуть параметр Экспорт.

Прикладывайте скриншоты

Также приветствуется описание в формате Gherkin

Функционал <информация о текущем положении в каталоге загружаемого теста вариант1>
   Как <?>
   Я хочу <упростить создание тестов>

Контекст
  Дано <xUnitFor1C>
  И <8.3.11>

Сценарий <ожидаемое поведение>
  Допустим существует обработка теста и настройки для теста в каталоге <c:\тесты\тест1.epf> и <c:\тесты\тест1_настройки.mxl>
  Когда вызывается функция <ЗаполнитьНаборТестов>
  Тогда получаем путь из переменной <НаборТестов.ЗагружаемыйПуть> и загружаем настройки для параметризированного теста.

@artbear
Copy link
Member

artbear commented Jul 13, 2018

в ADD есть ишуз с решением vanessa-opensource/add#74
все просто

@artbear
Copy link
Member

artbear commented Jul 13, 2018

@ivanov660 Закрываем?

@ivanov660
Copy link
Author

  1. Посмотрел предлагаемый вариант решения, не подходит. Он срабатывает при выполнении теста. Мы же хотели, чтобы он срабатывал в функции "ЗаполнитьНаборТестов".

  2. По коду происходит следующая последовательность действий:
    а) Открыли xddRunner и нажимаем кнопку загрузить тест из файла.
    б) Указываем путь к тесту "Тест1.epf"
    в) Вызывается плагин "ЗагрузчикФайла.epf"
    г) xddRunner вызывает функцию модуля обработки "ЗагрузитьТестыВНовомФормате()" плагина "ЗагрузчикФайла.epf"
    д) В функции "ЗагрузитьТестыВНовомФормате()" идет вызов процедуры модуля объекта "Тест1.epf" "ЗаполнитьНаборТестов()" !!!! вот тут мы бы хотели знать путь.
    е) Рисуется дерево тестов и т.д.
    ж) жмем выполнить тест и выполняется процедура

"ЗаполнитьСвойствоПриНаличии(Контекст, "ПутьКФайлуПолный", ДочернийУзел.Путь);"

На шаге "д" мы используем переменную обработки "ЗагрузчикФайла.epf" ЗагружаемыйПуть и для нее добавили признак экспорта.
И мы получаем значение ее внутри нашей обрабокти.

Перем КэшПостроительДереваТестов;
Перем ЗагружаемыйПуть ЭКСПОРТ; // ппк чтобы получить путь каталога файла загружаемого

Перем КонтейнерТестов;
Перем ТекущаяГруппа;

  1. Зачем нам это нужно. Цель - упростить создание юнит тестов.
    К примеру, у нас есть каталог рядом с обработкой, в котором есть набор файлов. И при загрузке теста, мы хотим создать столько тестовых случаев, сколько этих файлов.
    Это при анализе результатов выполнения тестов поможет понять, какой вариант не сработал. Пример, кода:
Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт
	
        Файл = новый Файл(НаборТестов.ЗагружаемыйПуть);
        ПутьКаталог = файл.Путь+"/"+ИмяКаталогаМакетов;
	МассивФайлов = НайтиФайлы(ПутьКаталог,"*.mxl",Истина);

	Для каждого Файл из МассиВФайлов Цикл
		ИмяТеста="Тест_ЗагрузитьДанныеИзМакета";
		НаборТестов.Добавить(ИмяТеста, НаборТестов.ПараметрыТеста(Файл.ПолноеИмя,Файл.Имя), "Загрузить макет: "+Файл.Имя);
	КонецЦикла;
	
КонецПроцедуры

В результате мы увидим в дереве тестов, следующий список:

Папка
   ЗагрузитьМакеты
        Загрузить макет: файл1.mxl
        Загрузить макет: файл2.mxl

@ivanov660
Copy link
Author

Это как раз один из case-ов про который я рассказывал на infostart event 2017, когда был раздел про создание юнит тестов.

@artbear
Copy link
Member

artbear commented Jul 17, 2018

@ivanov660 Ага, кейс понятен и важен.

Устроит вариант, когда
"ЗаполнитьСвойствоПриНаличии(Контекст, "ПутьКФайлуПолный", ПутьФайла);"
будет выполняться перед заполнением набора тестов
?

@artbear
Copy link
Member

artbear commented Jul 17, 2018

@ivanov660 А вообще моя рекомендация - использовать проектные пути.

т.е.

  • задавать каталог проекта при запуске из командной строки
    • запуск 1С - сложная собираемая строка запуска, хотя она у Вас наверняка реализована уже в ваших инструментах :)
    • запуск через vanessa-runner - рекомендую - проще всего.
  • затем этот каталог будет в КонтекстЯдра.Объект.КаталогПроекта
  • можно строить относительные пути и получать любые файлы.

В ADD реализовано.

ps я вчера кейс работы с файлами показывал на вебинаре по АДД - есть отдельная страница презентации.

@ivanov660
Copy link
Author

  1. Да. Заполнение экспортной переменной "ПутьКФайлуПолный" модуля объекта обработки теста перед выполнением функции получения набора тестов хороший вариант.
  2. Действительно. Функционал запуска юнит-теста на xddRunner мы реализовали с точки зрения пользователя максимально прозрачно, никакой головной боли ;-) создание задания выполнения юнит-теста с 5-й минуты весь ролик идет 9 минут, будет интересно узнать ваше мнение.
  3. Про структуру хранения тестов (на сколько я понял мы об одном и том же).
    3.1. Мы разрабатываем и храним тесты в GIT.
    3.2. Для каждой локальной машины в разрезе пользователь и компьютер в базе указывается путь к локальному каталогу GIT (сервер запускающий тесты также имеет свой локальный каталог GIT).
    3.3. Все тесты в базе имеют относительный путь.
    3.4. Формирование командной строки, интеграция разработчика, тестировщика или распараллеливание выполнения тестов не является проблемой.
    3.5. В текущий момент существуют некоторые ограничения, но они устранимы.

@artbear
Copy link
Member

artbear commented Jul 19, 2018

@ivanov660 Реализовано в vanessa-opensource/add#246 (пока в девелоп-ветке)

Рекомендую переходить к использованию именно ADD, т.к. xUnitFor1C никто не развивает, в отличие от активно развивающейся ADD !

@artbear
Copy link
Member

artbear commented Jul 19, 2018

Заполнение экспортной переменной "ПутьКФайлуПолный" модуля объекта обработки теста перед выполнением функции получения набора тестов хороший вариант.

реализовано и документировано в ADD

@artbear artbear added the ADD ADD, Vanessa-ADD https://github.com/silverbulleters/add label Jul 19, 2018
@ivanov660
Copy link
Author

хорошо понял. перевели бы в архив текущий проект. текущую проблему можно закрывать.
обновления закачаю с потомка)

@artbear
Copy link
Member

artbear commented Jul 19, 2018

@ivanov660 у нас здесь сообщество, и я один не могу принять решение о закрытии/архивировании проекта.

есть коллеги, которые предлагали пока не закрывать проект, возможно, они будут дорабатывать.

например, для 8.2, поддержка которого в ADD пока все-таки под вопросом

@artbear
Copy link
Member

artbear commented Jul 19, 2018

но АДД уже довольно сильно ускакал вперед :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ADD ADD, Vanessa-ADD https://github.com/silverbulleters/add question
Projects
None yet
Development

No branches or pull requests

2 participants