diff --git a/VA-Тесты/АвтоТестыVA.sbsl b/VA-Тесты/АвтоТестыVA.sbsl index 8e42ca0..2b97503 100644 --- a/VA-Тесты/АвтоТестыVA.sbsl +++ b/VA-Тесты/АвтоТестыVA.sbsl @@ -15,11 +15,91 @@ конст ВЕРСИЯ = "1.0.1" + метод Скрипт() - Консоль.Записать("Скрипт для автоматизированного тестирования на Vanessa Automation") - Консоль.Записать("Версия %ВЕРСИЯ") + Консоль.Записать("Скрипт для автоматизированного тестирования на Vanessa Automation (%ВЕРСИЯ)") + + Консоль.Записать("\нСписок команд:\н") + + Консоль.Записать("АвтотестыVA version") + Консоль.Записать("\тВозвращает текущую версию скрипта") + + Консоль.Записать("АвтотестыVA update") + Консоль.Записать("\тОбновляет скрипт, VanessaAutomation и необходимые шаблоны шагов") ; +метод version() + Консоль.Записать("Версия: %ВЕРСИЯ\н") +; + +метод update() + Консоль.Записать("Обновление:") + + Консоль.Записать("\тСкрипт АвтотестыVA") + Консоль.Записать("\т- скачивание новой версии") + пер временныйСкрипт = СкачатьНовуюВерсиюСкрипта() + пер версияНовогоСкрипта = ВерсияНовогоСкрипта(временныйСкрипт) + Консоль.Записать("\т- Новая версия скрипта %версияНовогоСкрипта") +; + +метод СкачатьНовуюВерсиюСкрипта(): Файл + пер клиентHttp = КлиентHttp.СБазовымUrl("https://raw.githubusercontent.com/") + пер запросGet = клиентHttp.ЗапросGet("/DoublesunRUS/devscripts/master/VA-Тесты/АвтоТестыVA.sbsl") + исп ответHttp = запросGet.Выполнить() + + знч временныйСкрипт = Файлы.СоздатьВременныйФайл("АвтотестыVA", ".sbsl", Ложь) + исп потокЗаписи = временныйСкрипт.ОткрытьПотокЗаписи() + ответHttp.Тело.КопироватьВ(потокЗаписи) + + возврат временныйСкрипт +; + +метод КодировкаПотокаВыводаСкриптов(): Строка + возврат СредаИсполнения.ПолучитьСвойство("file.encoding") +; + +метод ВыполнитьСкрипт(имяФайлаСкрипта: Строка, имяКомандыСкрипта: Строка, параметрыСкрипта: Массив): ПотокЧтения + пер расширениеИсполнителя: Строка + знч имяОС = СредаИсполнения.ПолучитьСвойство("os.name") + выбор когда имяОС.НачинаетсяС("windows", Истина) + расширениеИсполнителя = "cmd" + иначе + расширениеИсполнителя = "sh" + ; + знч путьКИсполнителю = СредаИсполнения.ПолучитьСвойство("logback.configurationFile").Удалить("config" + Файлы.СимволРазделителя + + "logback.xml") + "bin/executor_j11." + расширениеИсполнителя + + пер аргументыПроцессаОс = ["-s", имяФайлаСкрипта, "-m", имяКомандыСкрипта] + если не параметрыСкрипта.Пусто() + аргументыПроцессаОс.ДобавитьВсе(параметрыСкрипта) + ; + + знч библиотека = новый ПроцессОс(путьКИсполнителю, аргументыПроцессаОс, Ложь) + + библиотека.Запустить() + библиотека.ОжидатьЗавершения() + + знч ошибкиВыполненияСкрипта = библиотека.ПолучитьПотокОшибок() + знч текстОшибок = ошибкиВыполненияСкрипта.ПрочитатьКакТекст(КодировкаПотокаВыводаСкриптов()) + если не текстОшибок.Пусто() + выбросить новый ИсключениеНедопустимоеСостояние(текстОшибок) + ; + + возврат библиотека.ПотокВывода +; + +метод ВерсияНовогоСкрипта(файлСкрипта: Файл): Строка + исп потокВывода = ВыполнитьСкрипт(файлСкрипта.Путь, "version", []) + знч строкаВерсии = потокВывода.ПрочитатьКакСтроку() + если не строкаВерсии.НачинаетсяС("Версия:") + знч текстОшибки = "При запуске новой версии скрипта получено сообщение:\н%строкаВерсии" + выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки) + ; + + возврат строкаВерсии.Подстрока(8) +; + + структура ОписаниеНастроек пер НастройкиVA: ОписаниеНастроекVA пер НастройкиТестовойБазы: ОписаниеНастроекТестовойБазы @@ -83,8 +163,7 @@ пер ДелатьОтчетВФорматеjUnit: Булево = Истина пер ОтчетJUnit: VAParamsОтчетJUnit - конструктор(КаталогПроекта, КаталогФич, КаталогиБиблиотек, ВыполнениеСценариев, КлиентТестирования, ОтчетAllure, - ОтчетJUnit) + конструктор(КаталогПроекта, КаталогФич, КаталогиБиблиотек, ВыполнениеСценариев, КлиентТестирования, ОтчетAllure, ОтчетJUnit) ; структура VAParamsВыполнениеСценариев @@ -135,11 +214,12 @@ пока не чтениеФайлаАвтофичи.ЧтениеЗавершено() знч строкаФайла = чтениеФайлаАвтофичи.ПрочитатьСтроку("utf-8") если строкаФайла.Пусто() - продолжить + продолжить ; знч массивСтроки = строкаФайла.Разделить("\т", Истина) если массивСтроки.Размер() != 3 - выбросить новый ИсключениеИндексВнеГраниц("В каждой строке автофича файла должно быть 3 значения, разделенных табуляцией.") + выбросить новый ИсключениеИндексВнеГраниц( + "В каждой строке автофича файла должно быть 3 значения, разделенных табуляцией.") ; знч пользователиАвтофичи = массивСтроки[2].Разделить(",") @@ -149,15 +229,16 @@ автофичи.Вставить(файлАвтофичи.ИмяБезРасширения, массивОбъектов) ; - + возврат автофичи ; -метод СоздатьФайлыФичПоАвтофичам(путьФич: Строка, автофичи: Соответствие, пользователи: Массив, путьШаблонов: Строка, имяФайлаШаблонаШапки: Строка) +метод СоздатьФайлыФичПоАвтофичам(путьФич: Строка, автофичи: Соответствие, пользователи: Массив, путьШаблонов: Строка, + имяФайлаШаблонаШапки: Строка) если автофичи.Пусто() - возврат + возврат ; - + пер файлШаблонаШапки = новый Файл("%путьШаблонов/%имяФайлаШаблонаШапки") если не файлШаблонаШапки.Существует() выбросить новый ИсключениеНедопустимыйАргумент("Файл %{файлШаблонаШапки.Имя} не существует.") @@ -177,7 +258,7 @@ для описаниеОбъекта из автофича.Значение если описаниеОбъекта.Пользователи.Найти(пользователь.Представление) == Неопределено - продолжить + продолжить ; знч объектМассивом = описаниеОбъекта.Объект.Разделить(".") // Массив @@ -216,12 +297,12 @@ пер автофичи = СписокФайловАвтофич(настройки.НастройкиАвтофич.КаталогАвтофич) если автофичи.Пусто() - выбросить новый ИсключениеНедопустимоеСостояние("Нет ни одного файла автофич по пути %{настройки.НастройкиАвтофич.КаталогАвтофич}") + выбросить новый ИсключениеНедопустимоеСостояние("Нет ни одного файла автофич по пути %{настройки.НастройкиАвтофич + .КаталогАвтофич}") ; - СоздатьФайлыФичПоАвтофичам( - настройки.НастройкиVA.КаталогФич, автофичи, - настройки.НастройкиАвтофич.Пользователи, настройки.НастройкиАвтофич.КаталогШаблоновШагов, настройки.НастройкиАвтофич.ФайлШаблонаШапки) + СоздатьФайлыФичПоАвтофичам(настройки.НастройкиVA.КаталогФич, автофичи, настройки.НастройкиАвтофич.Пользователи, + настройки.НастройкиАвтофич.КаталогШаблоновШагов, настройки.НастройкиАвтофич.ФайлШаблонаШапки) ; метод RunTests(имяФайлаНастроек: Строка) @@ -243,7 +324,8 @@ пер временныеИБПользователей = новый Соответствие() для пользователь из настройки.НастройкиАвтофич.Пользователи знч временныйКаталогИБ = Файлы.СоздатьВременныйКаталог("Test1CD") - CreateInfobaseFromTemplate(настройки.НастройкиТестовойБазы.ПутьКDT, временныйКаталогИБ.Путь, исполняемыйФайлПлатформы) + CreateInfobaseFromTemplate(настройки.НастройкиТестовойБазы.ПутьКDT, временныйКаталогИБ.Путь, + исполняемыйФайлПлатформы) временныеИБПользователей.Вставить(пользователь.Представление, временныйКаталогИБ) ; @@ -264,19 +346,20 @@ пер настройкиVAParamsОтчетJUnit = новый VAParamsОтчетJUnit("%{настройки.НастройкиVA.КаталогОтчетов}/junit") пер настройкиVAParams = новый VAParams(настройки.НастройкиVA.КаталогПроекта, каталогФич, настройки.НастройкиVA - .КаталогиБиблиотек, настройкиVAParamsВыполнениеСценариев, настройкиVAParamsКлиентТестирования, - настройкиVAParamsОтчетAllure, настройкиVAParamsОтчетJUnit) + .КаталогиБиблиотек, настройкиVAParamsВыполнениеСценариев, настройкиVAParamsКлиентТестирования, настройкиVAParamsОтчетAllure, + настройкиVAParamsОтчетJUnit) знч временныйФайлНастроекVA = Файлы.СоздатьВременныйФайл("VAParams", ".json") исп потокНастроекVA = временныйФайлНастроекVA.ОткрытьПотокЗаписи() СериализацияJson.ЗаписатьОбъект(потокНастроекVA, настройкиVAParams) потокНастроекVA.Закрыть() - знч параметрыVA = "StartFeaturePlayer;DisableUserSettingsLoader;DisableLoadTestClientsTable;DisableLoadConfig;ClearStepsCache;VAParams=%временныйФайлНастроекVA" + знч параметрыVA = + "StartFeaturePlayer;DisableUserSettingsLoader;DisableLoadTestClientsTable;DisableLoadConfig;ClearStepsCache;VAParams=%временныйФайлНастроекVA" - пер командаПлатформы = ExecuteDataProcessorTestManager(настройки.НастройкиVA.ПутьVanessaAutomationSingle, - параметрыVA, временныйКаталогИБ.Путь, исполняемыйФайлПлатформы, настройки.НастройкиТестовойБазы - .ИмяПользователя, настройки.НастройкиТестовойБазы + пер командаПлатформы = ExecuteDataProcessorTestManager(настройки.НастройкиVA.ПутьVanessaAutomationSingle, параметрыVA, + временныйКаталогИБ.Путь, исполняемыйФайлПлатформы, настройки.НастройкиТестовойБазы + .ИмяПользователя, настройки.НастройкиТестовойБазы .ПарольПользователя) командыПлатформы.Добавить(командаПлатформы) @@ -301,11 +384,12 @@ исп потокФайлаНастроек = файлНастроек.ОткрытьПотокЧтения() пер настройкиJson = новый НастройкиЧтенияОбъектовJson() настройкиJson.ИгнорироватьНеизвестныеСвойства = Истина - пер настройки = СериализацияJson.ПрочитатьОбъект(потокФайлаНастроек, Тип(ОписаниеНастроек), настройкиJson) как ОписаниеНастроек + пер настройки = СериализацияJson.ПрочитатьОбъект(потокФайлаНастроек, Тип(ОписаниеНастроек), + настройкиJson) как ОписаниеНастроек пер пользователи = новый Массив() для пользователь из настройки.НастройкиАвтофич.Пользователи - знч описаниеПользователя = новый ОписаниеПользователя(пользователь["ПредставлениеПользователя"], пользователь["ИмяПользователя"], - пользователь["ПарольПользователя"]) + знч описаниеПользователя = новый ОписаниеПользователя(пользователь["ПредставлениеПользователя"], + пользователь["ИмяПользователя"], пользователь["ПарольПользователя"]) пользователи.Добавить(описаниеПользователя) ; настройки.НастройкиАвтофич.Пользователи = пользователи @@ -514,8 +598,8 @@ Консоль.Записать("ИБ успешно создана.") ; -метод ExecuteDataProcessorTestManager(имяВнешнейОбработки: Строка, вспомогательныеПараметры: Строка, путьКИБ: Строка, имяФайлаПлатформы: Строка, - имяПользователя: Строка = "", пароль: Строка = ""): ОписаниеКомандыПлатформы +метод ExecuteDataProcessorTestManager(имяВнешнейОбработки: Строка, вспомогательныеПараметры: Строка, путьКИБ: Строка, + имяФайлаПлатформы: Строка, имяПользователя: Строка = "", пароль: Строка = ""): ОписаниеКомандыПлатформы пер параметрыПроцесса = новый Массив() параметрыПроцесса.Добавить("ENTERPRISE") параметрыПроцесса.Добавить("/TestManager") @@ -543,8 +627,7 @@ возврат командаПлатформы ; -метод ВыполнитьКомандуПлатформы(имяКоманды: Строка, параметры: Массив, выводитьОшибки: Булево = - Истина): ОписаниеКомандыПлатформы +метод ВыполнитьКомандуПлатформы(имяКоманды: Строка, параметры: Массив, выводитьОшибки: Булево = Истина): ОписаниеКомандыПлатформы знч временныйФайлЛогов = Файлы.СоздатьВременныйФайл() параметры.Добавить("/Out") @@ -577,8 +660,8 @@ выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки) ; - текстОшибки += Строки.Шаблон("\в\нКоманда: $0\в\нПараметры: $1", [командаПлатформы.имяКоманды, Строки.Соединить(командаПлатформы - .параметры, " ")]) + текстОшибки += Строки.Шаблон("\в\нКоманда: $0\в\нПараметры: $1", [командаПлатформы.имяКоманды, Строки.Соединить( + командаПлатформы.параметры, " ")]) исп ошибкиВыполненияСкрипта = командаПлатформы.временныйФайлЛогов.ОткрытьПотокЧтения() текстОшибки += "\в\н" + ошибкиВыполненияСкрипта.ПрочитатьКакТекст(КодировкаПотокаВыводаПлатформы())