1
0
mirror of https://github.com/DoublesunRUS/devscripts.git synced 2026-06-11 22:46:51 +02:00

Автотесты VA

This commit is contained in:
Капралов Александр
2021-11-01 22:41:05 +03:00
parent 8a62eff214
commit 963dfec123
+134 -35
View File
@@ -36,23 +36,119 @@
Консоль.Записать("Обновление:")
Консоль.Записать("\тСкрипт АвтотестыVA")
Консоль.Записать("\т- скачивание новой версии")
пер временныйСкрипт = СкачатьНовуюВерсиюСкрипта()
пер версияНовогоСкрипта = ВерсияНовогоСкрипта(временныйСкрипт)
Консоль.Записать("\т- скачивание последней версии")
пер новыйСкрипт = СкачатьПоследнююВерсиюСкрипта()
пер версияНовогоСкрипта = ВерсияНовогоСкрипта(новыйСкрипт)
если ВЕРСИЯ != версияНовогоСкрипта
Консоль.Записать("\т- изменение версии скрипта \"%ВЕРСИЯ\" -> \"%версияНовогоСкрипта\"")
пер файлТекущегоСкрипта = ФайлТекущегоСкрипта()
пер новоеИмя = файлТекущегоСкрипта.Путь + "/АвтотестыVA_%версияНовогоСкрипта.sbsl"
Файлы.Скопировать(временныйСкрипт, новоеИмя)
пер текущийСкрипт = ФайлТекущегоСкрипта()
Консоль.Записать("\т\т- текущий скрипт: %{текущийСкрипт.Путь}")
Консоль.Записать("\т- перезапуск обновления")
ВыполнитьСкрипт(новоеИмя, "update", [])
возврат
Консоль.Записать("\т\т- изменение версии скрипта \"%ВЕРСИЯ\" -> \"%версияНовогоСкрипта\"")
пер новоеИмяСкрипта = ПерезаписатьСкрипт(текущийСкрипт, новыйСкрипт)
если новоеИмяСкрипта != Неопределено
Консоль.Записать("\т\т- перезапуск обновления")
ВыполнитьСкрипт(новоеИмяСкрипта, "update", [])
возврат
иначе
Консоль.Записать("\т\т- текущая версия исполнителя не позволяет перезаписать скрипт")
;
Консоль.Записать("\т- скрипт не требует обновления")
;
Консоль.Записать("\т\т- скрипт не требует обновления")
Консоль.Записать("\тVanessa Automation")
Консоль.Записать("\т\т- скачивание последней версии")
знч версияОбработки = СкачатьПоследнююВерсиюVanessaAutomation()
если версияОбработки == Неопределено
Консоль.Записать("\т\т- не удалось скачать обработку")
иначе
Консоль.Записать("\т\т- записана обработка версии %версияОбработки")
;
Консоль.Записать("\тШаблоны фич и шагов")
Консоль.Записать("\т\т- скачивание шагов")
знч количествоШагов = СкачатьШаблоны("steps")
Консоль.Записать("\т\т- записано %количествоШагов")
Консоль.Записать("\т\т- скачивание фич")
знч количествоФич = СкачатьШаблоны("templates")
Консоль.Записать("\т\т- записано %количествоФич")
Консоль.Записать("Обновление завершено.")
;
метод СкачатьНовуюВерсиюСкрипта(): Файл
метод СкачатьШаблоны(имяПапки: Строка): Число
пер клиентHttp = КлиентHttp.СБазовымUrl("https://api.github.com/")
пер запросGet = клиентHttp.ЗапросGet("/repos/DoublesunRUS/devscripts/contents/VA-Тесты/%имяПапки")
исп ответHttp = запросGet.Выполнить()
пер списокФайлов = СериализацияJson.ПрочитатьОбъект(ответHttp.Тело) как Массив
знч пользовательскаяПапка = СредаИсполнения.ПолучитьСвойство("user.dir")
клиентHttp = КлиентHttp.СБазовымUrl("https://raw.githubusercontent.com/")
пер папка = новый Файл("%пользовательскаяПапка/%имяПапки/")
если папка.ЯвляетсяКаталогом()
Файлы.Удалить(папка)
;
для данныеФайла из списокФайлов
знч имя = данныеФайла.Получить("name")
знч путь = данныеФайла.Получить("path")
запросGet = клиентHttp.ЗапросGet("/DoublesunRUS/devscripts/master/%путь")
исп ответФайл = запросGet.Выполнить()
пер файл = Файлы.Создать("%пользовательскаяПапка/%имяПапки/%имя")
исп потокЗаписи = файл.ОткрытьПотокЗаписи()
ответФайл.Тело.КопироватьВ(потокЗаписи)
потокЗаписи.Закрыть()
;
возврат списокФайлов.Размер()
;
метод СкачатьПоследнююВерсиюVanessaAutomation(): Строка?
пер клиентHttp = КлиентHttp.СБазовымUrl("https://github.com/")
пер запросGet = клиентHttp.ЗапросGet("/Pr-Mex/vanessa-automation/releases/latest")
.УстановитьМаксимумПеренаправлений(0)
исп ответHttp = запросGet.Выполнить()
знч новыйUrl = ответHttp.Заголовки.ПолучитьПервый("Location")
знч номерВерсии = новыйUrl.Подстрока(новыйUrl.НайтиСКонца("/") + 1)
знч версияUrl =
"/Pr-Mex/vanessa-automation/releases/download/%номерВерсии/vanessa-automation-single.%номерВерсии.zip"
запросGet = клиентHttp.ЗапросGet(версияUrl)
исп ответФайл = запросGet.Выполнить()
знч пользовательскаяПапка = СредаИсполнения.ПолучитьСвойство("user.dir")
пер обработка = новый Файл("%пользовательскаяПапка/vanessa-automation-single.epf")
исп потокЗаписи = обработка.ОткрытьПотокЗаписи()
пер файлZip = новый ЧтениеZip(ответФайл.Тело)
если не файлZip.Следующий()
возврат Неопределено
;
исп потокОбработки = файлZip.ПолучитьПотокЭлемента()
потокОбработки.КопироватьВ(потокЗаписи)
возврат номерВерсии
;
метод ПерезаписатьСкрипт(текущийСкрипт: Файл, новыйСкрипт: Файл): Строка?
если не текущийСкрипт.Существует()
знч текстОшибки = "Файл со скриптом перестал существовать: %{текущийСкрипт.Путь}"
выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки)
;
если текущийСкрипт.Каталог == Неопределено
возврат Неопределено // Обход ошибки Исполнителя
;
Файлы.Скопировать(новыйСкрипт, текущийСкрипт.Путь)
возврат текущийСкрипт.Путь
;
метод СкачатьПоследнююВерсиюСкрипта(): Файл
пер клиентHttp = КлиентHttp.СБазовымUrl("https://raw.githubusercontent.com/")
пер запросGet = клиентHttp.ЗапросGet("/DoublesunRUS/devscripts/master/VA-Тесты/АвтоТестыVA.sbsl")
исп ответHttp = запросGet.Выполнить()
@@ -76,8 +172,8 @@
иначе
расширениеИсполнителя = "sh"
;
знч путьКИсполнителю = СредаИсполнения.ПолучитьСвойство("logback.configurationFile").Удалить("config" + Файлы
.СимволРазделителя + "logback.xml") + "bin/executor_j11." + расширениеИсполнителя
знч путьКИсполнителю = СредаИсполнения.ПолучитьСвойство("logback.configurationFile").Удалить("config" + Файлы.СимволРазделителя
+ "logback.xml") + "bin/executor_j11." + расширениеИсполнителя
пер аргументыПроцессаОс = ["-s", имяФайлаСкрипта, "-m", имяКомандыСкрипта]
если не параметрыСкрипта.Пусто()
@@ -181,8 +277,7 @@
пер ДелатьОтчетВФорматеjUnit: Булево = Истина
пер ОтчетJUnit: VAParamsОтчетJUnit
конструктор(КаталогПроекта, КаталогФич, КаталогиБиблиотек, ВыполнениеСценариев, КлиентТестирования, ОтчетAllure,
ОтчетJUnit)
конструктор(КаталогПроекта, КаталогФич, КаталогиБиблиотек, ВыполнениеСценариев, КлиентТестирования, ОтчетAllure, ОтчетJUnit)
;
структура VAParamsВыполнениеСценариев
@@ -237,7 +332,8 @@
;
знч массивСтроки = строкаФайла.Разделить("\т", Истина)
если массивСтроки.Размер() != 3
выбросить новый ИсключениеИндексВнеГраниц("В каждой строке автофича файла должно быть 3 значения, разделенных табуляцией.")
выбросить новый ИсключениеИндексВнеГраниц(
"В каждой строке автофича файла должно быть 3 значения, разделенных табуляцией.")
;
знч пользователиАвтофичи = массивСтроки[2].Разделить(",")
@@ -251,7 +347,8 @@
возврат автофичи
;
метод СоздатьФайлыФичПоАвтофичам(путьФич: Строка, автофичи: Соответствие, пользователи: Массив, путьШаблонов: Строка, имяФайлаШаблонаШапки: Строка)
метод СоздатьФайлыФичПоАвтофичам(путьФич: Строка, автофичи: Соответствие, пользователи: Массив, путьШаблонов: Строка,
имяФайлаШаблонаШапки: Строка)
если автофичи.Пусто()
возврат
;
@@ -318,8 +415,8 @@
.КаталогАвтофич}")
;
СоздатьФайлыФичПоАвтофичам(настройки.НастройкиVA.КаталогФич, автофичи, настройки.НастройкиАвтофич.Пользователи, настройки
.НастройкиАвтофич.КаталогШаблоновШагов, настройки.НастройкиАвтофич.ФайлШаблонаШапки)
СоздатьФайлыФичПоАвтофичам(настройки.НастройкиVA.КаталогФич, автофичи, настройки.НастройкиАвтофич.Пользователи,
настройки.НастройкиАвтофич.КаталогШаблоновШагов, настройки.НастройкиАвтофич.ФайлШаблонаШапки)
;
метод RunTests(имяФайлаНастроек: Строка)
@@ -341,7 +438,8 @@
пер временныеИБПользователей = новый Соответствие()
для пользователь из настройки.НастройкиАвтофич.Пользователи
знч временныйКаталогИБ = Файлы.СоздатьВременныйКаталог("Test1CD")
CreateInfobaseFromTemplate(настройки.НастройкиТестовойБазы.ПутьКDT, временныйКаталогИБ.Путь, исполняемыйФайлПлатформы)
CreateInfobaseFromTemplate(настройки.НастройкиТестовойБазы.ПутьКDT, временныйКаталогИБ.Путь,
исполняемыйФайлПлатформы)
временныеИБПользователей.Вставить(пользователь.Представление, временныйКаталогИБ)
;
@@ -362,18 +460,19 @@
пер настройки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,
временныйКаталогИБ.Путь, исполняемыйФайлПлатформы, настройки.НастройкиТестовойБазы
.ИмяПользователя, настройки.НастройкиТестовойБазы
.ПарольПользователя)
командыПлатформы.Добавить(командаПлатформы)
@@ -399,11 +498,12 @@
исп потокФайлаНастроек = файлНастроек.ОткрытьПотокЧтения()
пер настройкиJson = новый НастройкиЧтенияОбъектовJson()
настройкиJson.ИгнорироватьНеизвестныеСвойства = Истина
пер настройки = СериализацияJson.ПрочитатьОбъект(потокФайлаНастроек, Тип(ОписаниеНастроек), настройкиJson) как ОписаниеНастроек
пер настройки = СериализацияJson.ПрочитатьОбъект(потокФайлаНастроек, Тип(ОписаниеНастроек),
настройкиJson) как ОписаниеНастроек
пер пользователи = новый Массив()
для пользователь из настройки.НастройкиАвтофич.Пользователи
знч описаниеПользователя = новый ОписаниеПользователя(пользователь["ПредставлениеПользователя"], пользователь["ИмяПользователя"],
пользователь["ПарольПользователя"])
знч описаниеПользователя = новый ОписаниеПользователя(пользователь["ПредставлениеПользователя"],
пользователь["ИмяПользователя"], пользователь["ПарольПользователя"])
пользователи.Добавить(описаниеПользователя)
;
настройки.НастройкиАвтофич.Пользователи = пользователи
@@ -612,8 +712,8 @@
Консоль.Записать("ИБ успешно создана.")
;
метод ExecuteDataProcessorTestManager(имяВнешнейОбработки: Строка, вспомогательныеПараметры: Строка, путьКИБ: Строка, имяФайлаПлатформы: Строка,
имяПользователя: Строка = "", пароль: Строка = ""): ОписаниеКомандыПлатформы
метод ExecuteDataProcessorTestManager(имяВнешнейОбработки: Строка, вспомогательныеПараметры: Строка, путьКИБ: Строка,
имяФайлаПлатформы: Строка, имяПользователя: Строка = "", пароль: Строка = ""): ОписаниеКомандыПлатформы
пер параметрыПроцесса = новый Массив()
параметрыПроцесса.Добавить("ENTERPRISE")
параметрыПроцесса.Добавить("/TestManager")
@@ -641,8 +741,7 @@
возврат командаПлатформы
;
метод ВыполнитьКомандуПлатформы(имяКоманды: Строка, параметры: Массив, выводитьОшибки: Булево =
Истина): ОписаниеКомандыПлатформы
метод ВыполнитьКомандуПлатформы(имяКоманды: Строка, параметры: Массив, выводитьОшибки: Булево = Истина): ОписаниеКомандыПлатформы
знч временныйФайлЛогов = Файлы.СоздатьВременныйФайл()
параметры.Добавить("/Out")
@@ -675,8 +774,8 @@
выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки)
;
текстОшибки += Строки.Шаблон("\в\нКоманда: $0\в\нПараметры: $1", [командаПлатформы.имяКоманды, Строки.Соединить(командаПлатформы
.параметры, " ")])
текстОшибки += Строки.Шаблон("\в\нКоманда: $0\в\нПараметры: $1", [командаПлатформы.имяКоманды, Строки.Соединить(
командаПлатформы.параметры, " ")])
исп ошибкиВыполненияСкрипта = командаПлатформы.временныйФайлЛогов.ОткрытьПотокЧтения()
текстОшибки += "\в\н" + ошибкиВыполненияСкрипта.ПрочитатьКакТекст(КодировкаПотокаВыводаПлатформы())