You've already forked devscripts
mirror of
https://github.com/DoublesunRUS/devscripts.git
synced 2026-06-11 22:46:51 +02:00
Автотесты VA
This commit is contained in:
+134
-35
@@ -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", [командаПлатформы.имяКоманды, Строки.Соединить(
|
||||
командаПлатформы.параметры, " ")])
|
||||
|
||||
исп ошибкиВыполненияСкрипта = командаПлатформы.временныйФайлЛогов.ОткрытьПотокЧтения()
|
||||
текстОшибки += "\в\н" + ошибкиВыполненияСкрипта.ПрочитатьКакТекст(КодировкаПотокаВыводаПлатформы())
|
||||
|
||||
Reference in New Issue
Block a user