示例#1
0
def start_vanessa(param_dict, test_name, kill=True, global_test_name=''):
    '''
    param_dict - словарь параметров
    test_name - имя теста, присваивается автоматически в зависимости от тэгов расставленых в фича-файле
    например: "@_$Наценка-сумма-строка"
    kill -
    *
    подготавливает конфиг для Ванессы
    запускает Ванессу с нужным тестом
    создает лог запуска теста
    '''
    VAParams = va_params(param_dict, test_name)
    path_VAParams = param_dict['TESTS_ON_RUNNER'] + 'VAParams.json'
    path_VAParams = path_VAParams.replace('\\', '\\\\')

    write_string_file(path_VAParams, 'w', VAParams)

    comm_str = '{PLATFORM} ENTERPRISE /F {PATH_BASE} /DEBUG /AllowExecuteScheduledJobs -Off /DisableStartupDialogs /DisableStartupMessages /N"Администратор" /P"" /Execute {VANNESSA_EPF} /TESTMANAGER /C"StartFeaturePlayer;VBParams={VANESSA_PARAMS}" /Out {LOG_PATH}'.format(
        PLATFORM=param_dict['START_PL_1C'],
        PATH_BASE=param_dict['WORK_PATH_BASE_M'],
        VANNESSA_EPF=param_dict['VANNESSA_EPF'],
        VANESSA_PARAMS=path_VAParams,
        LOG_PATH=param_dict['LOG_PATH'])

    result = just_do_it(comm_str, param_dict, '1cv8.exe', 'CALL VANESSA', kill,
                        param_dict['CLIENT'])

    if param_dict['FLAG_ERROR_START'] == False:
        log_name = '{0}\\log_{1}\\LOG_{2}({3}).txt'.format(
            param_dict['REPORTS_PATH'], param_dict['CONF'], test_name,
            global_test_name)
        log_save('CREATE LOG: ' + log_name + '\n', param_dict)
        copyfile(param_dict['LOG_PATH'], log_name)
    return result
示例#2
0
def just_do_it(command, param_dict, about='', p_1c='', client=None):
    '''
    command - консольная команда
    about - строка описыват что делаем
    p_1c=''
    *
    запускает консольную команду в процессе
    '''
    log_save(about + ' : ' + command, param_dict)
    proc(command, p_1c, False, client)
示例#3
0
def del_path(cur_path, params):
    '''
    cur_path - директория которую нужно удалить
    *
    удаляет директорию
    '''
    if path.exists(cur_path):
        log_save('DEL ' + cur_path, params)
        rmtree(cur_path)
    else:
        log_save('NOT DEL ' + cur_path, params)
示例#4
0
def prepare_tests(params,
                  test_name,
                  addit_strings_head='',
                  addit_strings_tail='',
                  SWAP_CURR_STR=[],
                  DT=''):
    '''
    params - словарь параметров
    test_name - имя общего теста
    addit_strings_head - имя файла с тестом, тест прикрепляющийся к началу основного теста, если нужно
    addit_strings_tail - имя файла с тестом, тест прикрепляющийся к концу основного теста, если нужно
    *
    "режет" общий файл с тестом на N количество основных тестов для запуска
    прикрепляет к ним "голову" и "конец" если нужно
    '''
    test_path = params['TESTS_ON_RUNNER']
    USER = params['MODEL_USER']
    TEST_USER_LIST = params['TEST_USER_LIST']
    TEST_USER_LIST_append = TEST_USER_LIST.append

    test_list = open_file_r(test_path + '\\' + test_name)
    test_list = hot_swap(test_list, SWAP_CURR_STR,
                         params['WORK_PATH_BASE_CURR'])
    all_tests = parse_dirty_test(test_list)

    for test in all_tests:
        if len(test) == 0:
            continue

        #извлекает имя пользователя из первой строки теста
        name_list = split('[$\n]', test[0])
        name = name_list[1]
        if USER == 'take_from_testname' or name.find("%") != -1:
            usr_list = split(r'[%.]', name)
            if len(usr_list) < 2:
                usr_name = ''
            else:
                usr_name = usr_list[1]
            curr_test_name = [name, usr_name, False, False, DT]
        else:
            curr_test_name = [name, USER, False, False, DT]

        #формирует имя файла с тестом
        current_test_path = '{0}\\@_{1}.feature'.format(test_path, name)
        log_save('директория текущего теста: ' + current_test_path + '\n',
                 params)

        TEST_USER_LIST_append(curr_test_name)
        params['TEST_USER_LIST'] = TEST_USER_LIST

        write_curr_test(params, test, curr_test_name, current_test_path,
                        addit_strings_head, addit_strings_tail)
示例#5
0
def just_do_it(command,
               param_dict,
               wait_1c='',
               about='',
               kill=False,
               client=None):
    '''
    command - консольная команда
    wait_1c - имя процесса 1с, если нужно ждать 1с
    about - строка описыват что делаем
    kill - если нужно убить процесс
    *
    запускает консольную команду в процессе
    '''
    log_save(about + ' : ' + command, param_dict)
    if param_dict['FLAG_ERROR_START'] == False:
        result = proc(command, wait_1c, kill, client)
    else:
        result = proc(command)
    return result
示例#6
0
def update_test(params, usr='******'):
    '''
    params - словарь параметров
    usr - подставлять запуск от администратора или пользователя
    *
    собирает содержание файла с тестом: "Тест обновления программы"
    нужен для обновления эталонной базы
    *
    return test - возвращает строку с содержанием файла
    '''
    if usr == 'adm':
        user = params['MODEL_ADMIN_USER']
    elif usr == 'usr':
        user = params['MODEL_USER']
    else:
        user = ''

    test = '''#language: ru 
@tree
Функциональность: Тест обновления программы

Контекст: 
\tИ Я закрыл все окна клиентского приложения 

@КодСценария=000000001 
Сценарий: Тест обновления программы

\tКогда Я подключаю клиент тестирования с параметрами: 
\t\t| \'Имя\' | \'Синоним\' | \'Порт\' | \'Строка соединения\' | \'Логин\' | \'Пароль\' | \'Запускаемая обработка\' | \'Дополнительные параметры строки запуска\' |
\t\t| \'test\' | \'\' | \'\' | \'File="''' + params[
        'WORK_PATH_BASE_CURR'] + '''";\' | \'''' + user + '''\' | \'\' | \'\' | \'\'|
\tКогда открылось окно \'Легальность получения обновлений\' 
\tИ я изменяю флаг \'Я подтверждаю легальность получения обновления в соответствии с вышеизложенными условиями\'
\tИ я нажимаю на кнопку \'Продолжить\'
\tИ я жду открытия окна "Что нового в конфигурации Розница, редакция 2.3" в течение 600 секунд
'''
    log_save(test + '\n', params)
    return test
示例#7
0
def prepare_st(param_dict):
    '''
    param_dict - словарь параметров
    *
    устанавливает кодировку в консоли для русских символов
    подключается к указанным компьютерам
    копирует платформу на компьютер где будет прохолить тест
    копирует Ванессу на компьютер где будет прохолить тест
    копирует тесты, конфигурацию и эталоны на компьютер где будет прохолить тест
    создает директорию для логфайлов
    '''
    client = param_dict['CLIENT']
    NET_USER = param_dict['NET_USER']
    NET_DOMAIN = param_dict['NET_DOMAIN']
    NET_PASSWORD = param_dict['NET_PASSWORD']
    TESTS_ON_RUNNER = param_dict['TESTS_ON_RUNNER']
    WORK_PATH = param_dict['WORK_PATH']
    TEST_CATALOG = param_dict['TEST_CATALOG']
    PREPARE_MODE = param_dict['PREPARE_MODE']
    REPORTS_PATH = param_dict['REPORTS_PATH']
    MODEL_ON_RUNNER = param_dict['MODEL_ON_RUNNER']

    if not path.exists(TEST_CATALOG):
        log_save('CREATE : ' + TEST_CATALOG, param_dict)
        mkdir(TEST_CATALOG)

    xcopy_template = 'XCOPY \"{0}\" \"{1}\"  /H /Y /C /R /S /J /Q'
    copy_from_test_repo = 'XCOPY \"{0}\\tests_git\" \"{1}\"  /H /Y /C /R /S /J /Q'.format(
        REPORTS_PATH, TESTS_ON_RUNNER)
    copy_from_tests = xcopy_template.format(param_dict['TESTS_PATH'],
                                            TESTS_ON_RUNNER)

    if PREPARE_MODE == 'uprep+ret':
        #удаляем все эталонные базы
        path_list = listdir(MODEL_ON_RUNNER)
        for i in path_list:
            curr_path = MODEL_ON_RUNNER + i
            if path.isdir(curr_path):
                del_path(curr_path, param_dict)
        #или скачиваем все исходники
    else:
        if NET_DOMAIN != '':
            just_do_it('net use', param_dict, 'NET')
            just_do_it('net use /delete * /y', param_dict, 'NET')

            net_con_1 = 'net use {0} /PERSISTENT:NO /User:{1}\\{2} {3}'.format(
                param_dict['BUILD_FILES_Trunk'], NET_DOMAIN, NET_USER,
                NET_PASSWORD)

            just_do_it(net_con_1, param_dict, 'NET CON')
            just_do_it('net use', param_dict, 'NET')

        copy_platform = xcopy_template.format(
            param_dict['PLATFORM_PATH'], param_dict['PLATFORM_PATH_ON_RUNNER'])
        copy_vanessa = xcopy_template.format(param_dict['VANESSA_PATH'],
                                             param_dict['VANESSA_ON_RUNNER'])
        copy_vanessa_tools = xcopy_template.format(
            param_dict['VANESSA_TOOLS'], param_dict['VANESSA_TOOLS_ON_RUNNER'])
        copy_all_dt = xcopy_template.format(param_dict['MODEL_PATH'],
                                            param_dict['MODEL_ON_RUNNER'])
        copy_cf = xcopy_template.format(param_dict['CF_PATH'], WORK_PATH)

        command_list = [
            [just_do_it, [copy_platform, param_dict, 'COPY PLATFORM']],
            [just_do_it, [copy_vanessa, param_dict, 'COPY VANESSA']],
            [
                just_do_it,
                [copy_vanessa_tools, param_dict, 'COPY VANESSA TOOLS']
            ], [just_do_it, [copy_all_dt, param_dict, 'COPY ALL DT']],
            [just_do_it, [copy_cf, param_dict, 'COPY CF']]
        ]

        proc_list = []
        proc_list_append = proc_list.append
        for list_i in command_list:
            if list_i[1][1] == 'COPY CF':
                if PREPARE_MODE == 'cpcf':
                    proc_list_append(dif_proc(list_i[0], list_i[1]))
                else:
                    if not path.exists(WORK_PATH):
                        mkdir(WORK_PATH)
            else:
                proc_list_append(dif_proc(list_i[0], list_i[1]))
            sleep(1)

        for proc in proc_list:
            proc.join()

    #создание каталога с отчетами
    if not path.exists(REPORTS_PATH):
        log_save('CREATE : ' + REPORTS_PATH, param_dict)
        mkdir(REPORTS_PATH)
    log_dir = '{0}\\log_{1}'.format(REPORTS_PATH, param_dict['CONF'])
    if not path.exists(log_dir):
        log_save('CREATE : ' + log_dir, param_dict)
        mkdir(log_dir)

    #копирование автотестов
    if param_dict['GIT_REPO_TESTS'] != '':
        if path.exists(REPORTS_PATH + '\\tests_git'):
            just_do_it(
                'cd "' + REPORTS_PATH +
                '\\tests_git" & git pull origin master > cmd', param_dict,
                'GIT PULL')
        else:
            just_do_it('cd ' + REPORTS_PATH + ' & git clone "' +\
                       param_dict['GIT_REPO_TESTS'] + '" "tests_git" > cmd', param_dict, 'GIT CLONE')

        just_do_it(copy_from_test_repo, param_dict, 'COPY FROM TEST REPO')
    else:
        just_do_it(copy_from_tests, param_dict, 'COPY TESTS')
示例#8
0
def main_func(sys_argv_list):
    '''
    MaiN
    получает лист со сценарием тестирования
    получает словарь с параметрами
    очищает тестовый каталог
    выполняет сценарии
    '''

    #proc('chcp 65001') #устанавливает кодировки в UTF для консоли
    proc('set PYTHONIOENCODING=utf-8')
    #proc('chcp 1251')
    #proc('set PYTHONIOENCODING=windows-1251')
    #print_cat()

    kill_1C()

    #получает все настройки и сценарий тестов
    params = ret_param_dict(sys_argv_list)
    scenario_list = params['SCEN']

    kill_python(params)

    #запускает отдельный процесс, следящий за выполнением консольных команд
    WORK_PATH = params['WORK_PATH']
    servo = start_servo(WORK_PATH, params['REPORTS_PATH'])
    log_save('SERVO PID : ' + str(servo.pid), params)
    client = start_client(servo)

    params['START_TIME'] = str(datetime.now())
    params['CLIENT'] = client

    #обходит каждый тест из сценария и выполняет его--------------------------------------------
    for test in scenario_list:
        #подготовка к запуску теста
        DT = test['DT']
        params['MODEL_ON_RUNNER_CURRENT_DT'] = params['MODEL_ON_RUNNER'] + DT
        params['MODEL_ADMIN_USER'] = test['ADM_USER']
        params['MODEL_USER'] = test['USER']
        params['PREPARE_MODE'] = test['PREPARE_MODE']

        flag_curr_path_cd = env_prepare(params, DT)

        TEST_FILE = test['TEST_FILE']
        ADD_HEAD = test['ADD_HEAD']
        ADD_TAIL = test['ADD_TAIL']
        ADDR = test["ADDR"]
        SWAP_CURR_STR = test["SWAP_CURR_STR"]

        #запуск тестов
        start_tests(params, TEST_FILE, ADD_HEAD, ADD_TAIL, flag_curr_path_cd,
                    SWAP_CURR_STR, DT)
    #-------------------------------------------------------------------------------------------

    params['END_TIME'] = str(datetime.now())

    if len(sys_argv_list) <= 1:
        #запускает консольное меню с упавшими тестами, что бы воспроизвести их вновь----------------
        TEST_USER_LIST = params['TEST_USER_LIST']
        list_error_tests = []
        count = 0
        for i in TEST_USER_LIST:
            if i[3] == True:
                count = count + 1
                list_error_tests.append([str(count), i])

        flag_job_with_error_tests = True
        MODEL_ON_RUNNER = params['MODEL_ON_RUNNER']

        while flag_job_with_error_tests:
            #print_cat()
            print('start: {0}, end: {1}.'.format(params['START_TIME'],
                                                 params['END_TIME']))
            for i in list_error_tests:
                print('{0}) {1}'.format(i[0], i[1][0]))
            print(
                "\n$ введи номер теста для запуска,\n$ для выхода нажми \"0\",\n$ для отправки почты набери \"send\""
            )
            num = input('---------------------------> :')

            if num == '0':
                flag = False
                break

            elif num == 'send':
                #почтовая рассылка
                CONF_CURR = params["CONF"]
                err_list = open_file_r(WORK_PATH + 'log_spent_tests.txt')
                error_str = ''
                for i in err_list:
                    error_str = error_str + ''.join(i)
                for i in scenario_list:
                    ADDR = i['ADDR']
                    if ADDR != '':
                        try:
                            send_mail(
                                dict(CONF=CONF_CURR, ADDR=ADDR,
                                     TEXT=error_str))
                        except:
                            log_save('ERROR send mail', params)

            else:
                for i in list_error_tests:
                    if i[0] == num:
                        test_name = i[1][0]
                        flag_curr_path_cd = MODEL_ON_RUNNER + '\\' + 'storage_' + i[
                            1][4]
                        push_cd_client(params, flag_curr_path_cd)

                        params['FLAG_ERROR_START'] = True
                        params['ESC_VANESSA'] = 'Ложь'
                        params['ESC_TEST_CLIENT'] = 'Ложь'
                        start_vanessa(params, '@_' + test_name + '.feature',
                                      False, test_name)
        #-------------------------------------------------------------------------------------------

    end(client, servo)
    kill_python(params)
示例#9
0
def ret_param_dict(sys_argv_list):
    '''
    '''
    current_directory = path.abspath(__file__)
    current_directory = path.split(current_directory)[0]

    #очистка логов
    #log = current_directory + '\\main_log.log'
    #if path.isfile(log):
    #remove(log)

    current_directory = path.split(current_directory)[0]

    #запуск с параметрами или без
    len_argv_list = len(sys_argv_list)
    if len_argv_list == 4:
        config = sys_argv_list[1]
        scen = sys_argv_list[2]
        ver_conf = sys_argv_list[3]
        if len(ver_conf) >= 50:
            print('нельзя вводить больше 50 знаков\n')
            exit()
    elif len_argv_list < 4 and len_argv_list > 1 or len_argv_list > 4:
        print('неправильное количество параметров в команде\n')
        exit()
    else:
        configs_list = []
        scen_list = []

        dir_list = listdir(current_directory)

        for i in dir_list:
            if i.find('config_') != -1:
                configs_list.append(i)
            elif i.find('scen_') != -1:
                scen_list.append(i)

        #консольное меню------------------------------------------------------------------------------------------------------------
        config = menu_cicle('\nВыбери номер конфигурационного файла: \n',
                            configs_list)
        scen = menu_cicle('\nВыбери номер файла со сценарием: \n', scen_list)

        ver_conf = input('\nВведи имя текущего прогона: ')
        if len(ver_conf) >= 50:
            print('нельзя вводить больше 50 знаков\n')
            exit()
        #---------------------------------------------------------------------------------------------------------------------------

    #читаем файлы с настройками
    config = open_file_r(current_directory + '\\' + config)
    scen = open_file_r(current_directory + '\\' + scen)

    #кортежи для проверки обязательности заполнения настройки, если True то настройка обязательна
    config_params_names = (
        ('PREPARE_MODE', True),
        ('BUILD_FILES', True),
        ('PLATFORM_NUMBER', True),
        ('PLATFORM_PATH', True),
        ('STARTER_1C', True),
        ('NET_DOMAIN', False),
        ('NET_USER', False),
        ('NET_PASSWORD', False),
        ('REPO_PATH', False),
        ('REPO_VER', False),
        ('REPO_USER', False),
        ('REPO_PASSWORD', False),
        ('GIT_REPO_TESTS', False),
        ('REPORTS', False),
    )
    scen_params_names = (
        ('ЭТАЛОН', 'DT', True),
        ('ПОЛЬЗОВАТЕЛЬ С ПОЛНЫМИ ПРАВАМИ', 'ADM_USER', True),
        ('ПОЛЬЗОВАТЕЛЬ ДЛЯ ТЕСТА', 'USER', True),
        ('ФАЙЛ С ТЕСТОМ', 'TEST_FILE', True),
        ('ПРИКРЕПИТЬ ДОП. ТЕСТ В НАЧАЛО', 'ADD_HEAD', False),
        ('ПРИКРЕПИТЬ ДОП. ТЕСТ В КОНЕЦ', 'ADD_TAIL', False),
        ('ПОЧТА', 'ADDR', False),
        ('ЗАМЕНА СТРОКИ', 'SWAP_CURR_STR', False),
    )
    #пустые словари для первоначальных настроек
    first_params = dict(PREPARE_MODE='',
                        BUILD_FILES='',
                        PLATFORM_NUMBER='',
                        PLATFORM_PATH='',
                        STARTER_1C='',
                        NET_DOMAIN='',
                        NET_USER='',
                        NET_PASSWORD='',
                        REPO_PATH='',
                        REPO_VER='',
                        REPO_USER='',
                        REPO_PASSWORD='',
                        GIT_REPO_TESTS='',
                        REPORTS='')

    one_test_params = dict(PREPARE_MODE='',
                           DT='',
                           ADM_USER='',
                           USER='',
                           TEST_FILE='',
                           ADD_HEAD='',
                           ADD_TAIL='',
                           ADDR='',
                           SWAP_CURR_STR=[])

    #заполнение первоначальных настроек из считанных файлов---------------------------------------------------------------------
    #заполнение настроек
    scenario_list = []
    for param_tuple in config_params_names:
        for i_str in config:
            param = param_tuple[0]
            control_str = i_str[0:3]
            if control_str.find('#') == -1 and i_str.find(param) != -1:
                val = i_str.split('=')[1]
                val = val.strip('\n')
                val = val.strip(' ')
                if val == '' and param_tuple[1]:
                    print(
                        '\nне заполнен обязательный параметр {0}\nзавершение работы\n'
                        .format(param))
                    exit()
                first_params[param] = val
                break

    #заполнение настроек сценариев
    test_counter = 1
    for i_str in scen:
        control_str = i_str[0:3]
        if control_str.find('#') == -1 and i_str.find('ЭТАЛОН') != -1:
            if one_test_params['TEST_FILE'] != '':
                # когда второй раз находит слово ЭТАЛОН.
                # то в настройки первого теста добавляет PREPARE_MODE, в остальных будет ret
                if test_counter == 2:
                    one_test_params['PREPARE_MODE'] = first_params[
                        'PREPARE_MODE']
                else:
                    one_test_params['PREPARE_MODE'] = 'ret'
                test_counter = test_counter + 1

                scenario_list.append(one_test_params.copy())

            for i in one_test_params:
                one_test_params[i] = ''

            val = i_str.split('=')[1]
            val = val.strip('\n')
            val = val.strip(' ')
            if val == '':
                print(
                    '\nне заполнен обязательный параметр ЭТАЛОН\nзавершение работы\n'
                )
                exit()
            one_test_params['DT'] = val
            test_counter = test_counter + 1

        elif control_str.find('#') == -1:
            for param_tuple in scen_params_names:
                param = param_tuple[0]
                name_param = param_tuple[1]
                if i_str.find(param) != -1:
                    val = i_str.split('=')[1]
                    val = val.strip('\n')
                    val = val.strip(' ')
                    if val == '' and param_tuple[2]:
                        print(
                            '\nне заполнен обязательный параметр {0}\nзавершение работы\n'
                            .format(param))
                        exit()
                    if param == 'ЗАМЕНА СТРОКИ':
                        val_list = val.split(',')
                        cr_ls = []
                        final_swap_list = []
                        for i in val_list:
                            i = i.strip(' ')
                            cr_ls.append(i)
                            if len(cr_ls) == 2:
                                final_swap_list.append(cr_ls.copy())
                                cr_ls = []
                        one_test_params[name_param] = final_swap_list
                    else:
                        one_test_params[name_param] = val
                    break
    if one_test_params['TEST_FILE'] != '':
        if test_counter == 2:  # если тест всего один то значение счетчика должно быть 2
            one_test_params['PREPARE_MODE'] = first_params['PREPARE_MODE']
        else:
            one_test_params['PREPARE_MODE'] = 'ret'
        scenario_list.append(one_test_params.copy())
    #---------------------------------------------------------------------------------------------------------------------------

    if first_params['REPORTS'] == '':
        first_params['REPORTS'] = current_directory + '\\REPORTS'

    pid_curr_proc = str(getpid())
    platform_number = first_params['PLATFORM_NUMBER']
    platform = first_params['PLATFORM_PATH'] + platform_number
    build_files = first_params['BUILD_FILES']
    storage = current_directory + '\\TEST_CATALOG'
    work = storage + '\\work\\'

    #финальный словарь с настройками-------------------------------------------------------------------------------------------
    param_dict = dict(
        CONF=ver_conf,
        BUILD_FILES_Trunk=build_files,
        PLATFORM_PATH=build_files + '\\platforms\\' + platform_number,
        PLATFORM_PATH_ON_RUNNER=platform + '\\',
        START_PL_1C='\"' + platform + '\\bin\\1cv8.exe\"',
        PID=pid_curr_proc,
        START_1cestart='"{0}"'.format(first_params['STARTER_1C']),
        CURR_DIR=current_directory + '\\',
        VANESSA_PATH=build_files + '\\vanessa\\vanessa-automation',
        VANESSA_TOOLS=build_files + '\\vanessa\\vanessa-tools',
        TEST_CATALOG=storage,
        VANESSA_ON_RUNNER=storage + '\\vanessa\\vanessa-automation\\',
        VANESSA_TOOLS_ON_RUNNER=storage + '\\vanessa\\vanessa-tools\\',
        VANNESSA_EPF=storage +
        '\\vanessa\\vanessa-automation\\vanessa-automation.epf',
        TESTS_PATH=build_files + '\\tests',
        TESTS_ON_RUNNER=storage + '\\tests\\',
        MODEL_PATH=build_files + '\\model',
        MODEL_ON_RUNNER=storage + '\\model\\',
        MODEL_ON_RUNNER_CURRENT_DT='',
        WORK_PATH=work,
        WORK_PATH_BASE_M=work + 'base_M',
        WORK_PATH_BASE_C=work + 'base_C',
        WORK_PATH_BASE_CURR='',
        CF_PATH=build_files + '\\cf',
        LOG_PATH=work + 'log.txt',
        MODEL_ADMIN_USER='',
        MODEL_USER='',
        NET_DOMAIN=first_params['NET_DOMAIN'],
        NET_USER=first_params['NET_USER'],
        NET_PASSWORD=first_params['NET_PASSWORD'],
        REPO_PATH=first_params['REPO_PATH'],
        REPO_VER=first_params['REPO_VER'],
        REPO_USER=first_params['REPO_USER'],
        REPO_PASSWORD=first_params['REPO_PASSWORD'],
        GIT_REPO_TESTS=first_params['GIT_REPO_TESTS'],
        ESC_VANESSA='Истина',
        ESC_TEST_CLIENT='Истина',
        STORAGE_CURR_1CD='',

        # замеры времени начала и окончания прогона
        START_TIME='',
        END_TIME='',
        PREPARE_MODE='',
        # хранит объект "клиент" с подключением к порту
        CLIENT=None,

        # хранит имя теста и имя пользователя от него
        # [0] - имя теста, [1] - имя ползователя, [2] - False если тест еще не использовался,
        # [3] - False если ошибок не было, [4] - имя использующегося DT файла (оно же имя папки с чистой базой под тест)
        TEST_USER_LIST=[],
        #если истина то запуск происходит без контроля завершения и не пишутся логи (для воспроизведения упавших тестов)
        FLAG_ERROR_START=False,
        REPORTS_PATH=first_params['REPORTS'],
        SCEN=scenario_list)
    #--------------------------------------------------------------------------------------------------------------------------
    log_save('текущая директория: ' + current_directory, param_dict)
    log_save('MAIN PID : ' + pid_curr_proc, param_dict)

    return param_dict
示例#10
0
def va_params(param_dict, test_name):
    '''
    param_dict - словарь параметров
    test_name - имя теста, присваивается автоматически в зависимости от тэгов расставленых в фича-файле
    *
    собирает содержание json файла с настройками запуска теста для Ванессы
    нужно изменять крайне внимательно
    *
    return params - возвращает строку с содержанием файла
    '''
    TESTS_ON_RUNNER = param_dict['TESTS_ON_RUNNER']
    feature_path = TESTS_ON_RUNNER + test_name
    if test_name.find("@_") != -1:
        name = param_dict['CONF'] + '_' + split('[%.]',
                                                split('@_', test_name)[1])[0]
    else:
        name = param_dict['CONF'] + '_' + test_name

    feature_path = feature_path.replace('\\', '\\\\')
    platform = param_dict['PLATFORM_PATH_ON_RUNNER'].replace('\\', '\\\\')
    va = param_dict['VANESSA_ON_RUNNER'].replace('\\', '\\\\')
    tests = TESTS_ON_RUNNER.replace('\\', '\\\\')
    reports = param_dict['REPORTS_PATH'].replace('\\', '\\\\')

    params = '''{
	"Lang": "ru",
	"DebugLog": true,
	"КаталогФич": "''' + feature_path + '''",
	"ДобавлятьКИмениСценарияУсловияВыгрузки": false,
	"ИмяТекущейСборки": "''' + name + '''",
	"ЗагрузкаФичПриОткрытии": "Загружать",
	"ВерсияПлатформыДляГенерацииEPF": "''' + platform + '''\\\\bin",
        "ВыполнитьСценарии": true,
        "ЗавершитьРаботуСистемы": "''' + param_dict['ESC_VANESSA'] + '''",
        "ЗакрытьTestClientПослеЗапускаСценариев": "''' + param_dict[
        'ESC_TEST_CLIENT'] + '''",
	"ВыполнениеСценариев": {
		"ВыполнятьШагиАссинхронно": false,
		"ИнтервалВыполненияШагаЗаданныйПользователем": 0.1,
		"ОбновлятьСтатистикуВДереве": true,
		"ОбновлятьДеревоПриНачалеВыполненияСценария": true,
		"ОстановкаПриВозникновенииОшибки": false,
		"ПоказыватьНомерСтрокиДереваПриВозникновенииОшибки": true,
		"ПриравниватьPendingКFailed": false,
		"ТаймаутДляАсинхронныхШагов": 0,
		"КоличествоСекундПоискаОкна": 5,
		"КоличествоПопытокВыполненияДействия": 3,
		"БезопасноеВыполнениеШагов": true,
		"ПаузаПриОткрытииОкна": 0
	},
	"КлиентТестирования": {
		"ЗапускатьКлиентТестированияСМаксимизированнымОкном": true,
		"ТаймаутЗапуска1С": 120,
		"ДиапазонПортовTestclient": "48100-48200",
		"ЗапускатьТестКлиентВРежимеОтладки": false,
		"КлючиОтладки": "",
		"АдресОтладчика": "",
		"ДанныеКлиентовТестирования": [
		]
	},
	"ДелатьОтчетВФорматеАллюр": "Истина",
	"КаталогOutputAllureБазовый": "''' + reports + '''",
	"СоздаватьПодкаталогВКаталогеAllureДляЭтойСборки": "Истина",
	"ДелатьОтчетВФорматеjUnit": false,
	"ДелатьОтчетВФорматеCucumberJson": false,
	"ДелатьОтчетВФорматеСППР": false,
	"СоздаватьИнструкциюHTML": false,
	"СоздаватьИнструкциюMarkdown": false,
	"ДелатьОтчетВоВнутреннемФормате": false,
	"КаталогиБиблиотек": "''' + va + '''features\\\Libraries",
	"ДелатьЛогВыполненияСценариевВЖР": true,
	"ДелатьЛогВыполненияСценариевВТекстовыйФайл": false,
	"ВыводитьВЛогВыполнениеШагов": false,
	"ДелатьЛогОшибокВТекстовыйФайл": false,
	"СобиратьДанныеОСостоянииАктивнойФормыПриОшибке": false,
	"СобиратьДанныеОСостоянииВсехФормПриОшибке": false,
	"ИмяФайлаЛогВыполненияСценариев": "''' + tests + test_name + '''",
	"ИмяКаталогаЛогОшибок": "''' + tests + '''",
	"КомандаСделатьСкриншот": "''' + '' + '''",
	"ДелатьСкриншотПриВозникновенииОшибки": false,
	"СниматьСкриншотКаждогоОкна1С": false,
	"КаталогПроекта": "''' + tests + '''",
	"СоздаватьИнструкциюВидео": false,
	"ИспользоватьSikuliXСервер": false,
	"ИскатьЭлементыФормыПоИмени": false,
	"ДобавлятьПриНакликиванииМетаИнформацию": false,
	"ТегTreeВключенПоУмолчанию": true
}
    '''
    log_save(params + '\n', param_dict)
    return params