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-10-29 14:22:24 +03:00
parent 0b26784de9
commit 386bdd3fe1
+114 -31
View File
@@ -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", [командаПлатформы.имяКоманды, Строки.Соединить(
командаПлатформы.параметры, " ")])
исп ошибкиВыполненияСкрипта = командаПлатформы.временныйФайлЛогов.ОткрытьПотокЧтения()
текстОшибки += "\в\н" + ошибкиВыполненияСкрипта.ПрочитатьКакТекст(КодировкаПотокаВыводаПлатформы())