Size: a a a

2019 May 08

ВА

Валентин Ажеронок... in testspro1c
import subprocess
import os
import time
import shutil
from os import path
from sys import argv

def reg_error_feature(feature):
   time.sleep(10)
   
   if not os.path.exists(f"{ci_errors}{feature}"):
       os.makedirs(f"{ci_errors}{feature}")
   else:
       for file_obj in os.listdir(f"{ci_errors}{feature}"):
           file_path = os.path.join(f"{ci_errors}{feature}", file_obj)
           if os.path.isfile(file_path):
               os.unlink(file_path)
   
   directory = f"{ci_errors}{feature}/BDD_logs/"
   if not os.path.exists(directory):
       os.makedirs(directory)
   else:
       for file_obj in os.listdir(directory):
           file_path = os.path.join(directory, file_obj)
           if os.path.isfile(file_path):
               os.unlink(file_path)

   shutil.copyfile(f"{workspace}/BDD_log.txt", f"{ci_errors}{feature}/BDD_log.txt")
   shutil.copyfile(f"{workspace}/BDD_result.txt", f"{ci_errors}{feature}/BDD_result.txt")

   shutil.copyfile(f"{features_files}/{feature}.feature", f"{ci_errors}{feature}/{feature}.feature")
   shutil.copyfile(f"{features_files}/{feature}.json", f"{ci_errors}{feature}/{feature}.json")
   shutil.copyfile(f"{features_files}/{feature}.str", f"{ci_errors}{feature}/{feature}.str")

   #Скриншоты
   directory = f"{workspace}/screenshots/"
   files = os.listdir(directory)
   for index in files:
       shutil.copyfile(f"{directory}{index}", f"{ci_errors}{feature}/{index}")

   #Логи
   directory = f"{workspace}/BDD_logs/"
   files = os.listdir(directory)
   for index in files:
       shutil.copyfile(f"{directory}{index}", f"{ci_errors}{feature}/BDD_logs/{index}")

   #Удаляем скриншоты
   directory = f"{workspace}/screenshots/"
   for file_obj in os.listdir(directory):
       file_path = os.path.join(directory, file_obj)
       if os.path.isfile(file_path):
           os.unlink(file_path)

   #Генерируем ошибку в формате СППР
   subprocess.call(f"{platforma1c} ENTERPRISE /F\"{workspace}/buildTM\" /EXECUTE \"{workspace}/src/GenerateErrorJSON.epf\"  /C \"JsonParams={workspace}/src/MakeJSONError.json;Преобразовать;FeatureCode={feature}\"")

   subprocess.call(f"{platforma1c} ENTERPRISE /F\"{workspace}/buildTM\" /EXECUTE \"{workspace}/src/MakeErrorBDD.epf\"  /C \"JsonParams={workspace}/src/GenerateParamError_{feature}.json;Преобразовать\"")    


#Основной блок
script, workspace, ci_errors = argv

#workspace = "E:/Jenkins/Slave1/workspace/KA_NightBuild"
#ci_errors = "E:/Jenkins/ci_errors/"
platforma1c = "\"C:/Program Files/1cv8/8.3.14.1694/bin/1cv8.exe\""
#Каталог из которого будем брать фичи  
features_files = f"{workspace}/features/Night_KA_Demo"
allure_directory = f"{workspace}/allure-results/"
allure_directory_temp = f"{workspace}/alluretemp/"  

#Формирование списка исключений
file_iskl = open(f"{workspace}/src/iskl.txt")
list_iskl = [line.strip() for line in file_iskl]
file_iskl.close()

#Формирование списка запуска ТМ и ТК в одной базе
file_tmtk = open(f"{workspace}/src/tmtk.txt")
list_tmtk = [line.strip() for line in file_tmtk]
file_tmtk.close()

#База для тестирования
subprocess.call(f"{platforma1c} CREATEINFOBASE File={workspace}/build_i /UseTemplate \"{workspace}/FilesNightBuild/1cv8.dt\" /DisableStartupMessages /DisableStartupDialogs")
#Копируем для ускорения старта
shutil.copyfile(f"{workspace}/build_i/1cv8.1cd", f"{workspace}/copybase/1cv8.1cd")

#Получаем список фич в переменную files  
files = os.listdir(features_files)  
#Фильтруем список  
feature_json = filter(lambda x: x.endswith('.json'), files)

for index_a in feature_json:
   name_f = os.path.basename(index_a)
   index = path.splitext(name_f)[0]
   #Если фича в списке исключений, то не обрабатываем ее
   if index in list_iskl:
       continue

   #Копируем 1cv8.1cd в каталог выполнения
   shutil.copyfile(f"{workspace}/copybase/1cv8.1cd", f"{workspace}/build_i/1cv8.1cd")
   #Пауза, способ борьбы с заблокированной таблицей SESSION (не стартует тестменеджер)
   time.sleep(60)
источник

ВА

Валентин Ажеронок... in testspro1c
#Если фича в особом списке, тестменеджер и тестклиент в одной ИБ
   if index in list_tmtk:
       subprocess.call(f"{platforma1c} ENTERPRISE /F\"{workspace}/build_i\" /N\"Администратор (Федоров)УТ\" /DisableStartupDialogs /DisableStartupMessages /TESTMANAGER /Execute \"{workspace}/src/vanessa-automation/vanessa-automation.epf\" /C\"StartFeaturePlayer;VBParams={features_files}/{index}.json\"")
   else:
       subprocess.call(f"{platforma1c} ENTERPRISE /F\"{workspace}/buildTM\" /DisableStartupDialogs /DisableStartupMessages /TESTMANAGER /Execute \"{workspace}/src/vanessa-automation/vanessa-automation.epf\" /C\"StartFeaturePlayer;VBParams={features_files}/{index}.json\"")

   #Перемещаем результаты аллюра в темп
   allure_files = os.listdir(allure_directory)
   for allure_file in allure_files:
       shutil.move(allure_directory + allure_file, allure_directory_temp)
   
   #Пауза, способ борьбы с заблокированной таблицей SESSION (не стартует тестменеджер)
   time.sleep(10)

   #Читаем BDD_result.txt и генерируем ошибку при необходимости
   result = '0'
   file = open(f"{workspace}/BDD_result.txt", 'r')
   text = file.read()
   file.close()
   if not result in text:
       reg_error_feature(index)
   
#Перемещаем все из темп аллюра для дальнейшего формирования
allure_files_temp = os.listdir(allure_directory_temp)
for allure_file_temp in allure_files_temp:
   shutil.move(allure_directory_temp + allure_file_temp, allure_directory)
источник

B

Banof in testspro1c
@banofbot теперь будет начинать голосования на бан, спустя 30 секунд после последнего бана. Спасибо!
источник

ВЕ

Виктор Ермаков... in testspro1c
Какие преимущества у проектов ванессы перед сценарным тестированием от 1с и недостатки.  Кто то знает ответ,  или источник где это написано?)
источник

ВЕ

Виктор Ермаков... in testspro1c
Для руководства
источник

RB

Ramis Bakhtiev in testspro1c
Валентин Ажеронок
import subprocess
import os
import time
import shutil
from os import path
from sys import argv

def reg_error_feature(feature):
   time.sleep(10)
   
   if not os.path.exists(f"{ci_errors}{feature}"):
       os.makedirs(f"{ci_errors}{feature}")
   else:
       for file_obj in os.listdir(f"{ci_errors}{feature}"):
           file_path = os.path.join(f"{ci_errors}{feature}", file_obj)
           if os.path.isfile(file_path):
               os.unlink(file_path)
   
   directory = f"{ci_errors}{feature}/BDD_logs/"
   if not os.path.exists(directory):
       os.makedirs(directory)
   else:
       for file_obj in os.listdir(directory):
           file_path = os.path.join(directory, file_obj)
           if os.path.isfile(file_path):
               os.unlink(file_path)

   shutil.copyfile(f"{workspace}/BDD_log.txt", f"{ci_errors}{feature}/BDD_log.txt")
   shutil.copyfile(f"{workspace}/BDD_result.txt", f"{ci_errors}{feature}/BDD_result.txt")

   shutil.copyfile(f"{features_files}/{feature}.feature", f"{ci_errors}{feature}/{feature}.feature")
   shutil.copyfile(f"{features_files}/{feature}.json", f"{ci_errors}{feature}/{feature}.json")
   shutil.copyfile(f"{features_files}/{feature}.str", f"{ci_errors}{feature}/{feature}.str")

   #Скриншоты
   directory = f"{workspace}/screenshots/"
   files = os.listdir(directory)
   for index in files:
       shutil.copyfile(f"{directory}{index}", f"{ci_errors}{feature}/{index}")

   #Логи
   directory = f"{workspace}/BDD_logs/"
   files = os.listdir(directory)
   for index in files:
       shutil.copyfile(f"{directory}{index}", f"{ci_errors}{feature}/BDD_logs/{index}")

   #Удаляем скриншоты
   directory = f"{workspace}/screenshots/"
   for file_obj in os.listdir(directory):
       file_path = os.path.join(directory, file_obj)
       if os.path.isfile(file_path):
           os.unlink(file_path)

   #Генерируем ошибку в формате СППР
   subprocess.call(f"{platforma1c} ENTERPRISE /F\"{workspace}/buildTM\" /EXECUTE \"{workspace}/src/GenerateErrorJSON.epf\"  /C \"JsonParams={workspace}/src/MakeJSONError.json;Преобразовать;FeatureCode={feature}\"")

   subprocess.call(f"{platforma1c} ENTERPRISE /F\"{workspace}/buildTM\" /EXECUTE \"{workspace}/src/MakeErrorBDD.epf\"  /C \"JsonParams={workspace}/src/GenerateParamError_{feature}.json;Преобразовать\"")    


#Основной блок
script, workspace, ci_errors = argv

#workspace = "E:/Jenkins/Slave1/workspace/KA_NightBuild"
#ci_errors = "E:/Jenkins/ci_errors/"
platforma1c = "\"C:/Program Files/1cv8/8.3.14.1694/bin/1cv8.exe\""
#Каталог из которого будем брать фичи  
features_files = f"{workspace}/features/Night_KA_Demo"
allure_directory = f"{workspace}/allure-results/"
allure_directory_temp = f"{workspace}/alluretemp/"  

#Формирование списка исключений
file_iskl = open(f"{workspace}/src/iskl.txt")
list_iskl = [line.strip() for line in file_iskl]
file_iskl.close()

#Формирование списка запуска ТМ и ТК в одной базе
file_tmtk = open(f"{workspace}/src/tmtk.txt")
list_tmtk = [line.strip() for line in file_tmtk]
file_tmtk.close()

#База для тестирования
subprocess.call(f"{platforma1c} CREATEINFOBASE File={workspace}/build_i /UseTemplate \"{workspace}/FilesNightBuild/1cv8.dt\" /DisableStartupMessages /DisableStartupDialogs")
#Копируем для ускорения старта
shutil.copyfile(f"{workspace}/build_i/1cv8.1cd", f"{workspace}/copybase/1cv8.1cd")

#Получаем список фич в переменную files  
files = os.listdir(features_files)  
#Фильтруем список  
feature_json = filter(lambda x: x.endswith('.json'), files)

for index_a in feature_json:
   name_f = os.path.basename(index_a)
   index = path.splitext(name_f)[0]
   #Если фича в списке исключений, то не обрабатываем ее
   if index in list_iskl:
       continue

   #Копируем 1cv8.1cd в каталог выполнения
   shutil.copyfile(f"{workspace}/copybase/1cv8.1cd", f"{workspace}/build_i/1cv8.1cd")
   #Пауза, способ борьбы с заблокированной таблицей SESSION (не стартует тестменеджер)
   time.sleep(60)
а зачем нужны слипы при запуске?
источник

ES

Evhen Sosna in testspro1c
Виктор Ермаков
Какие преимущества у проектов ванессы перед сценарным тестированием от 1с и недостатки.  Кто то знает ответ,  или источник где это написано?)
в сппр используют ванессу а не сценарное тестирование
источник

ПБ

Павел Белов... in testspro1c
Виктор Ермаков
Какие преимущества у проектов ванессы перед сценарным тестированием от 1с и недостатки.  Кто то знает ответ,  или источник где это написано?)
сценарное тестирование лично у меня из коробки не завелось
многие говорят, что для использования сценарного тестирования нужно поработать над ним напильником

vanessa завелась с первого раза, 2 часа на первый кейс, еще 6 - на подсистему
источник

ВА

Валентин Ажеронок... in testspro1c
Ramis Bakhtiev
а зачем нужны слипы при запуске?
Есть подозрение, что файлы иб держит ОС, вот и пытаюсь найти время, за которое она их отпустит
источник

ПБ

Павел Белов... in testspro1c
не нужно каждый раз грузить пустую базу для прогона теста
источник

ПБ

Павел Белов... in testspro1c
встроена в сппр 2.0
источник

ПБ

Павел Белов... in testspro1c
достаточно или еще накинуть?
источник

ПБ

Павел Белов... in testspro1c
ролики записывать умеет и озвучивать
источник

RB

Ramis Bakhtiev in testspro1c
Валентин Ажеронок
Есть подозрение, что файлы иб держит ОС, вот и пытаюсь найти время, за которое она их отпустит
проблема явно в чем то другом
источник

‌‌‎infactum in testspro1c
Павел Белов
встроена в сппр 2.0
точно ли встроена?
они скорее совместно работают.
источник

ПБ

Павел Белов... in testspro1c
‌‌‎infactum
точно ли встроена?
они скорее совместно работают.
сценарии тестирования сохраняются в сппр, я это имею в виду
источник

RB

Ramis Bakhtiev in testspro1c
еще такой глобальный совет - на запускайте 1ску явно передавая параметры в строку. всегда параметры в отдельный файлик а запуск через 1cv8 /@params.txt
источник

ВЕ

Виктор Ермаков... in testspro1c
Павел Белов
встроена в сппр 2.0
А если людям "сппр" ни о чем не говорит? 😁
источник

ПБ

Павел Белов... in testspro1c
Виктор Ермаков
А если людям "сппр" ни о чем не говорит? 😁
надо гуглить, не иначе
источник

‌‌‎infactum in testspro1c
Виктор Ермаков
А если людям "сппр" ни о чем не говорит? 😁
Тогда сошлитесь на то, что при разработке ERP теперь используют ванессу, а не сценарное)
источник