Closed uramalyutin closed 4 years ago
Написал код по загрузке в тест параметров из файла. Во внешней обработке (где отлаживался) код работает, но при добавлении в сценарий нет, т.к. "Код сервер" выполняется в безопасном режиме и поэтому не имеет доступа к файловой системе. Плохая затея, наверное...
а) если вы запускаете менеджер сценарного теста в базе "Тестирование", то можете воспользоваться хранением в регистре сведений "пользовательские переменные заданий"
в модуле сервера выполните код (оптимально добавить вызов с клиента в конфигурацию, если подойдет, то добавим в конфигурацию код):
--- на самом первом задании:
ПланировщикЗаданийСервер.УдалитьЗначениеПользовательскойПеременной(Неопределено,ИмяПеременной)
--- далее где надо записываете:
ПланировщикЗаданийСервер.УстановитьЗначениеПользовательскойПеременной(Неопределено, ИмяПеременной, ЗначениеПеременной)
--- где надо читаете:
ПланировщикЗаданийСервер.ПолучитьЗначениеПользовательскойПеременной(Неопределено, ИмяПеременной)
для имени переменной можете добавить номер проверки
ИмяПеременной="Моя переменная"+Объект.НомерПроверки (если в параллель могут работать несколько разных тестов или на разных базах)
б) через файл на клиенте:
`ПутьКФайлу = "C://temp/Данныетеста "+Объект.НомерПроверки+".txt";
Данные = "Номер документа";
// чтение
ТекстовыйДокумент = новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ПутьКФайлу);
Текст = ТекстовыйДокумент.ПолучитьТекст();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Текст);
ДанныеСтруктура = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
// запись
ДанныеСтруктура = новый Струкутра("НомерДокумента,ИмяКонтрагента",122,"ООО Тест");
Документ = новый ТекстовыйДокумент;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписатьJSON(ЗаписьJSON,ДанныеСтруктура);
Текст = ЗаписьJSON.Закрыть();
Модуль_СервисныеФункции = ПолучитьФорму("ВнешняяОбработка.МенеджерСценарногоТеста.Форма.Модуль_СервисныеФункции");
Документ.УстановитьТекст(Текст);
Документ.Записать(ПутьКФайлу,"UTF-8");`
в) в конфигурации целевой базы сохранять в какое-нибудь дополнительное свойство и потом читать, обновлять его.
Доработки конфигурации.
Сделал новый общий модуль
Для измерения Задание регистра сведений Пользовательские переменные заданий в тип данных добавил еще тип Строка (для возможности хранения параметров в разрезе наименований тестируемых баз)
Работа с параметрами (код выполняется на клиенте).
Для записи параметров в РС Пользовательские переменные заданий создал тест с кодом
Для получения параметров из РС Пользовательские переменные заданий создал тест с кодом
Для удаления параметров из РС Пользовательские переменные заданий создал тест с кодом (пока не применяем нигде, но пусть будет)
Для удобства работы с параметрами создал обработку (код по сути почти весь взял в конфигурации, остальное прям в готовом виде из интернетов). Особо не заморачивался, но пока устраивает. РаботаСПараметрами.zip
Пояснения. Обработкой Работа с параметрами можно заранее подготовить и загрузить список параметров в РС Пользовательские переменные заданий. Далее в каждом сценарии в самое начало вставляется готовый блок шагов для получения значений параметров из базы. Как видно из кода, будут получены значения для параметров, совпадающих по наименованию в тесте и РС Пользовательские переменные заданий. То есть вообще все параметры теста, а не только общие для нескольких сценариев. В конце некоторых сценариев, в которых формируются параметры, значения которых нужно передать в другие сценарии, вставляется готовый блок шагов для записи значений некоторых параметров в базу. Чтобы не "портить" обработку МСТ и не усложнять себе жизнь добавлением нового признака у параметра, решили использовать префикс "Общий" для отбора таких параметров. Таким образом в базу будут записываться не все параметры теста, а только нужные в других тестах. С удалением параметров пока не определились. Сейчас вообще не используем этот код в проверке, возможно в последствии переделаю не на удаление, а на очистку значений. В текущей реализации удаляться будут только параметры с префиксом "Общий".
Вообще целей было две. Во-первых, хотелось передавать значения параметров между тестами не объединяя их в один большой тест, ну и во-вторых, выполнять проверки с различными значениями параметров, изменяя их отдельно от тестов (не изменяя тесты). Обе цели достигнуты вроде бы.
Допущения.
Решение видели. Надо подумать над реализацией. Мы изначально не хотели связывать менеджер тестирования с конфигурацией базы, а сделать связь через параметры. Сейчас работы у нас осложняются еще тем фактом, что мы перешли на 8.3.15 платформу, а EDT ее еще не поддерживает. Поэтому приходится довольно неудобно выполнять доработки.
Да, тоже хотел оставить МСТ не связанным с конфигурацией Тестирвание. Поэтому хотел чтобы тест мог получить значения параметров из файла, из какого-нибудь сетевого каталога. Наверное отключить безопасный режим для выполнения из теста Кода сервера было бы проще, но нам понравился предложенный вариант с РС Пользовательские переменные заданий, его и реализовали. Наш метод только обновляет значения параметров, имеющихся в сценарии, из базы. Т.е. писать и отлаживать тест можно в любой базе. В принципе он и запускаться сможет в любой базе (менеджере тестирования), но в этом случае только со значениями параметров, сохраненными в тесте. А если нужно получать значения параметров из базы, то менеджером тестирования, конечно, должна быть конфигурация Тестирование. Мы пока используем этот метод и вроде бы все работает. Наконец все готовые тесты по ЗУП "позеленели". Но мы пользуемся пока еще наверное далеко не всеми возможностями конфигурации, когда увидим недостатки этого метода, тогда будем думать как их исправить.
Наверное можно реализовать нашу схему прямо в МСТ, но мы не решились на такие изменения обработки. Для каждого теста можно было бы указать файл, из которого брать значения параметров (по аналогии с файлом данных для DDT-тестов). Если файл не указан или не открывается, например, то брать параметры из самого теста. МСТ тогда должен перед выполнением теста получить значения параметров из файла, а при завершении выполнения записать значения некоторых параметров в файл (нужно добавить признак в таблицу параметров).
В ближайшем будущем планируем начать делать сценарные и юнит-тесты для УТ 11.0, наверное будет еще какое-то количество вопросов от меня по юнит-тестам =)
Добавили изменения в проект конфигурации
решено в рамках релиза v3.20.11.07
@ivanov660 Добрый день. Нигде не нашел описания нового механизма, потому пишу сюда: поясните, пожалуйста, как пользоваться новыми командами и самое главное за что отвечаю свойства в них (особенно тип и ключ).
Добрый день. Существует ли возможность передавать параметры из теста в тест в рамках выполнения проверки, не добавляя все тесты как готовые блоки шагов в какой-то один большой тест?
Мне надо в проверке по ЗУП практически в каждом тесте иметь какой-то указатель на сотрудника, который создается в одном из тестов в самом начале проверки. Не хотелось бы делать один большой тест, в котором все тесты добавлены как готовые блоки шагов.
Пришла такая идея: создать два теста с выполнением кода. В первом получать значения параметров для теста из файла, а во втором записывать значения параметров в файл после выполнения теста. Т.е. добавлять эти маленькие тесты как готовые блоки шагов в начало и конец каждого каждого теста.
Нет ли уже какого-то функционала, который мог бы решить эту проблему? Или эту проблему надо решать другим способом - например, как-то переделывать тесты или еще что-то...
Посоветуйте, пожалуйста, наиболее правильный способ с точки зрения методологии и этого фреймворка.