Ejemplo n.º 1
0
def get_testwrapper_file_details(testsuite_filepath, data_repository):
    """retuns testwrapperfile to use if specified, else returns False"""
    if data_repository.has_key('ow_testwrapperfile'):
        testwrapperfile = data_repository['ow_testwrapperfile']
    else:
        if Utils.xml_Utils.nodeExists(testsuite_filepath, "TestWrapperFile"):
            testwrapperfile = Utils.xml_Utils.getChildTextbyParentTag\
                (testsuite_filepath, 'Details', 'TestWrapperFile')
        else:
            return [False, False, False, 'abort']
    abs_cur_dir = os.path.dirname(testsuite_filepath)
    abs_testwrapperfile = Utils.file_Utils.getAbsPath(testwrapperfile,
                                                      abs_cur_dir)
    Utils.xml_Utils.getRoot(abs_testwrapperfile)
    jfile_obj = execution_files_class.ExecFilesClass(abs_testwrapperfile, "ts",
                                                     None, None)
    if not data_repository.get('suite_data_file', False):
        print_error(
            "Input data file must be specified in test suite global details section"
        )
        exit(0)
    j_data_type = jfile_obj.check_get_datatype(
        data_repository['suite_data_file'])
    j_runtype = jfile_obj.check_get_runtype()
    setup_on_error_action = Utils.testcase_Utils.get_setup_on_error(
        abs_testwrapperfile)
    return [abs_testwrapperfile, j_data_type, j_runtype, setup_on_error_action]
Ejemplo n.º 2
0
def get_suite_details(testsuite_filepath, data_repository, from_project, res_startdir,
                      logs_startdir):
    """Gets all the details of the Testsuite from its xml file
    Details that are currently obtained are:
        1. Name,
        2. default_onError action,
        3. default_onError value

    Arguments:
        filepath    = full path of the Testsuite xml file

    """
    suite_repository = {}
    suite_name = Utils.xml_Utils.getChildTextbyParentTag(testsuite_filepath, 'Details', 'Name')
    suite_title = Utils.xml_Utils.getChildTextbyParentTag(testsuite_filepath, 'Details', 'Title')
    suite_exectype = testsuite_utils.get_exectype_from_xmlfile(testsuite_filepath)
    def_on_error_action = Utils.testcase_Utils.get_defonerror_fromxml_file(testsuite_filepath)
    def_on_error_value = Utils.xml_Utils.getChildAttributebyParentTag(testsuite_filepath,
                                                                      'Details',
                                                                      'default_onError', 'value')
    filename = os.path.basename(testsuite_filepath)
    nameonly = Utils.file_Utils.getNameOnly(filename)
    operating_system = sys.platform

    if suite_name is None or suite_name is False:
        suite_name = nameonly
    else:
        suite_name = suite_name.strip()
        if suite_name != nameonly:
            print_warning("<Name> tag in xml file should match the filename")
            suite_name = nameonly

    if suite_title is None or suite_title is False:
        print_warning("title is missing, please provide a title for the testsuite")
        suite_title = "None"
    else:
        suite_title = str(suite_title).strip()

    if def_on_error_value is None or def_on_error_value is False:
        def_on_error_value = None

    if data_repository.has_key('ow_resultdir') and not from_project:
        res_startdir = data_repository['ow_resultdir']
    if data_repository.has_key('ow_logdir') and not from_project:
        logs_startdir = data_repository['ow_logdir']

    efile_obj = execution_files_class.ExecFilesClass(testsuite_filepath, "ts", res_startdir,
                                                     logs_startdir)
    data_file = efile_obj.get_data_files()[0]
    suite_resultfile = efile_obj.resultfile
    suite_execution_dir = os.path.dirname(suite_resultfile)
    junit_resultfile = Utils.file_Utils.getNameOnly(suite_resultfile) + "_tsjunit.xml"
    ws_results_execdir = efile_obj.results_execdir
    ws_logs_execdir = efile_obj.logs_execdir

    Utils.config_Utils.junit_file(junit_resultfile)

    suite_repository['suite_name'] = suite_name
    suite_repository['testsuite_filepath'] = testsuite_filepath
    suite_repository['operating_system'] = operating_system
    suite_repository['suite_title'] = suite_title
    suite_repository['suite_exectype'] = suite_exectype
    suite_repository['def_on_error_action'] = def_on_error_action
    suite_repository['def_on_error_value'] = def_on_error_value
    suite_repository['suite_execution_dir'] = suite_execution_dir
    suite_repository['suite_resultfile'] = suite_resultfile
    suite_repository['junit_resultfile'] = junit_resultfile
    suite_repository['ws_results_execdir'] = ws_results_execdir
    suite_repository['ws_logs_execdir'] = ws_logs_execdir
    if data_file is not False:
        suite_repository['data_file'] = data_file

    # copying testsuite xml file to execution directory of this testsuite
    shutil.copy2(testsuite_filepath, suite_execution_dir)

    return suite_repository
Ejemplo n.º 3
0
def get_project_details(project_filepath, res_startdir, logs_startdir,
                        data_repository):
    """Gets all details of the Project from its xml file"""

    project_repository = {}
    project_name = Utils.xml_Utils.getChildTextbyParentTag(
        project_filepath, 'Details', 'Name')
    project_title = Utils.xml_Utils.getChildTextbyParentTag(
        project_filepath, 'Details', 'Title')
    def_on_error_action = Utils.testcase_Utils.get_defonerror_fromxml_file(
        project_filepath)
    def_on_error_value = Utils.xml_Utils.getChildAttributebyParentTag(
        project_filepath, 'Details', 'default_onError', 'value')
    filename = os.path.basename(project_filepath)
    nameonly = Utils.file_Utils.getNameOnly(filename)
    operating_system = sys.platform

    if project_name is None or project_name is False:
        project_name = nameonly
    else:
        project_name = project_name.strip()
        if project_name != nameonly:
            print_warning("<Name> tag in xml file should match the filename")
            project_name = nameonly

    if project_title is None or project_title is False:
        print_warning(
            "title is missing, please provide a title for the project")
    else:
        project_title = str(project_title).strip()
    if def_on_error_value is None or def_on_error_value is False:
        def_on_error_value = None

    if data_repository.has_key('ow_resultdir'):
        res_startdir = data_repository['ow_resultdir']
    if data_repository.has_key('ow_logdir'):
        logs_startdir = data_repository['ow_logdir']

    efile_obj = execution_files_class.ExecFilesClass(project_filepath, "proj",
                                                     res_startdir,
                                                     logs_startdir)
    project_resultfile = efile_obj.resultfile
    project_junit = Utils.file_Utils.getNameOnly(
        project_resultfile) + "_prjunit.xml"
    project_execution_dir = os.path.dirname(project_resultfile)
    wp_results_execdir = efile_obj.results_execdir
    wp_logs_execdir = efile_obj.logs_execdir
    # project_resultfile = open(project_resultfile, 'a+')
    # Utils.config_Utils.junit_file(project_resultfile)

    project_repository['title'] = project_title
    project_repository['operating_system'] = operating_system
    project_repository['project_name'] = project_name
    project_repository['def_on_error_action'] = def_on_error_action
    project_repository['def_on_error_value'] = def_on_error_value
    project_repository['project_execution_dir'] = project_execution_dir
    project_repository['project_resultfile'] = project_junit
    project_repository['wp_results_execdir'] = wp_results_execdir
    project_repository['wp_logs_execdir'] = wp_logs_execdir

    # copying testsuite xml file to execution directory of this testsuite
    shutil.copy2(project_filepath, project_execution_dir)

    return project_repository
Ejemplo n.º 4
0
def get_testcase_details(testcase_filepath, data_repository, jiraproj):
    """Gets all the details of the Testcase
    (like title, resultsfolder, logsfolder, datafile, default on_error
    action/value etc) from its xml file,for details that are not provided
    by user assigns default values.
    """

    name = Utils.xml_Utils.getChildTextbyParentTag(testcase_filepath,
                                                   'Details', 'Name')
    title = Utils.xml_Utils.getChildTextbyParentTag(testcase_filepath,
                                                    'Details', 'Title')
    category = Utils.xml_Utils.getChildTextbyParentTag(testcase_filepath,
                                                       'Details', 'Category')
    def_on_error_action = Utils.testcase_Utils.get_defonerror_fromxml_file(
        testcase_filepath)
    def_on_error_value = Utils.xml_Utils.getChildAttributebyParentTag(
        testcase_filepath, 'Details', 'default_onError', 'value')
    filename = os.path.basename(testcase_filepath)
    filedir = os.path.dirname(testcase_filepath)
    nameonly = Utils.file_Utils.getNameOnly(filename)
    operating_system = sys.platform

    if name is None or name is False:
        name = nameonly
    else:
        name = name.strip()
        if name != nameonly:
            print_warning("<Name> tag in xml file should match the filename")
            name = nameonly

    if title is None or title is False:
        print_warning(
            "title is missing, please provide a title for the testcase")
        title = "None"
    else:
        title = str(title).strip()

    if def_on_error_value is None or def_on_error_value is False:
        def_on_error_value = None

    if not data_repository.has_key('wt_results_execdir'):
        if data_repository.has_key('ow_resultdir'):
            data_repository['wt_results_execdir'] = data_repository[
                'ow_resultdir']
        else:
            data_repository['wt_results_execdir'] = None

    if not data_repository.has_key('wt_logs_execdir'):
        if data_repository.has_key('ow_logdir'):
            data_repository['wt_logs_execdir'] = data_repository['ow_logdir']
        else:
            data_repository['wt_logs_execdir'] = None

    res_startdir = data_repository['wt_results_execdir']
    logs_startdir = data_repository['wt_logs_execdir']

    efile_obj = execution_files_class.ExecFilesClass(testcase_filepath, "tc",
                                                     res_startdir,
                                                     logs_startdir)
    resultfile = efile_obj.resultfile
    resultsdir = efile_obj.resultsdir
    logfile = efile_obj.logfile
    logsdir = efile_obj.logsdir
    defectsdir = efile_obj.get_defect_files()
    """Data files can be passed on to a test by four methods, below are the 
       four methods and its priority in order. 
       By this feature we allow the user to run the same testcases, with
       different data files with out actually changing the testcase.
    """

    ##First priority for data files given through CLI##
    if data_repository.has_key('ow_datafile'):
        datafile = data_repository['ow_datafile']
        data_type = efile_obj.check_get_datatype(datafile)
    ##Second priority for data files given in the Test suite step##
    elif data_repository.has_key(testcase_filepath):
        datafile = data_repository[testcase_filepath]
        data_type = efile_obj.check_get_datatype(datafile)
    ##Third priority for data files given in the Test Suite globally##
    elif data_repository.has_key('suite_data_file'):
        datafile = data_repository['suite_data_file']
        data_type = efile_obj.check_get_datatype(datafile)
    ##Fourth priority for data files given in the Testcase file##
    else:
        datafile, data_type = efile_obj.get_data_files()

    # tc_execution_dir = Utils.file_Utils.createDir_addtimestamp(execution_dir, nameonly)
    # datafile, data_type = get_testcase_datafile(testcase_filepath)
    # resultfile, resultsdir = get_testcase_resultfile(testcase_filepath, tc_execution_dir, nameonly)
    # logfile, logsdir = get_testcase_logfile(testcase_filepath, tc_execution_dir, nameonly)
    # defectsdir = get_testcase_defectsdir(testcase_filepath, tc_execution_dir, nameonly)
    kw_results_dir = Utils.file_Utils.createDir(resultsdir, 'Keyword_Results')
    console_logfile = Utils.file_Utils.getCustomLogFile(
        filename, logsdir, 'consoleLogs')

    Utils.config_Utils.debug_file(console_logfile)
    #objLogFile = Utils.testcase_Utils.pOpen(logfile)

    to_strip_list = [
        name, title, category, datafile, data_type, logsdir, resultsdir,
        defectsdir
    ]
    stripped_list = Utils.string_Utils.strip_white_spaces(to_strip_list)

    name = stripped_list[0]
    title = stripped_list[1]
    category = stripped_list[2]
    datafile = stripped_list[3]
    data_type = stripped_list[4]
    logsdir = stripped_list[5]
    resultsdir = stripped_list[6]
    defectsdir = stripped_list[7]

    # Add variables to data_repository
    data_repository['wt_name'] = name
    data_repository['wt_testcase_filepath'] = testcase_filepath
    data_repository['wt_title'] = title
    data_repository['wt_filename'] = filename
    data_repository['wt_filedir'] = filedir
    data_repository['wt_datafile'] = datafile
    data_repository['wt_data_type'] = data_type.upper()
    data_repository['wt_resultsdir'] = resultsdir
    data_repository['wt_resultfile'] = resultfile
    data_repository['wt_logsdir'] = logsdir
    data_repository['wt_kw_results_dir'] = kw_results_dir
    data_repository['wt_defectsdir'] = defectsdir
    #data_repository['wt_logfile'] = objLogFile
    data_repository['wt_operating_system'] = operating_system.upper()
    data_repository['wt_def_on_error_action'] = def_on_error_action.upper()
    data_repository['wt_def_on_error_value'] = def_on_error_value

    # For custom jira project name
    if not data_repository.has_key('jiraproj'):
        data_repository['jiraproj'] = jiraproj

    # write resultfile, logsdir, datafile, filename, logfile to config file
    Utils.config_Utils.set_resultfile(resultfile)
    Utils.config_Utils.set_datafile(datafile)
    Utils.config_Utils.set_logsdir(logsdir)
    Utils.config_Utils.set_filename(filename)
    Utils.config_Utils.set_logfile(logfile)
    Utils.config_Utils.set_testcase_path(filedir)

    # write TC details to result file
    Utils.testcase_Utils.pTestcase()
    Utils.testcase_Utils.pCustomTag("Title", title)
    Utils.testcase_Utils.pCustomTag("TC_Location", testcase_filepath)
    Utils.testcase_Utils.pCustomTag("Datafile", datafile)
    Utils.testcase_Utils.pCustomTag("Logsdir", logsdir)
    Utils.testcase_Utils.pCustomTag("Defectsdir", defectsdir)
    Utils.testcase_Utils.pCustomTag("Resultfile", resultfile)
    Utils.testcase_Utils.pCustomTag("Operating_System", operating_system)

    # copying testcase xml file to execution directory of this testcase
    exec_dir = os.path.dirname(data_repository['wt_resultsdir'])
    shutil.copy2(testcase_filepath, exec_dir)

    return data_repository
Ejemplo n.º 5
0
def get_suite_details(testsuite_filepath, data_repository, from_project,
                      res_startdir, logs_startdir):
    """Gets all the details of the Testsuite from its xml file
    Details that are currently obtained are:
        1. Name,
        2. default_onError action,
        3. default_onError value

    Arguments:
        filepath    = full path of the Testsuite xml file

    """
    suite_repository = {}
    suite_name = Utils.xml_Utils.getChildTextbyParentTag(
        testsuite_filepath, 'Details', 'Name')
    suite_title = Utils.xml_Utils.getChildTextbyParentTag(
        testsuite_filepath, 'Details', 'Title')
    suite_exectype = testsuite_utils.get_exectype_from_xmlfile(
        testsuite_filepath)
    suite_random_exec = Utils.xml_Utils.getChildTextbyParentTag(
        testsuite_filepath, 'Details', 'random_tc_Execution')
    def_on_error_action = Utils.testcase_Utils.get_defonerror_fromxml_file(
        testsuite_filepath)
    def_on_error_value = Utils.xml_Utils.getChildAttributebyParentTag(
        testsuite_filepath, 'Details', 'default_onError', 'value')
    if suite_random_exec:
        if suite_random_exec.lower() == "true":
            suite_random_exec = True
        else:
            suite_random_exec = False

    filename = os.path.basename(testsuite_filepath)
    nameonly = Utils.file_Utils.getNameOnly(filename)
    operating_system = sys.platform

    if suite_name is None or suite_name is False:
        suite_name = nameonly
    else:
        suite_name = suite_name.strip()
        if suite_name != nameonly:
            print_warning("<Name> tag in xml file should match the filename")
            suite_name = nameonly

    if suite_title is None or suite_title is False:
        print_warning(
            "title is missing, please provide a title for the testsuite")
        suite_title = "None"
    else:
        suite_title = str(suite_title).strip()

    if def_on_error_value is None or def_on_error_value is False:
        def_on_error_value = None

    if 'ow_resultdir' in data_repository and not from_project:
        res_startdir = data_repository['ow_resultdir']
    if 'ow_logdir' in data_repository and not from_project:
        logs_startdir = data_repository['ow_logdir']

    efile_obj = execution_files_class.ExecFilesClass(testsuite_filepath, "ts",
                                                     res_startdir,
                                                     logs_startdir)
    # First priority is given for data files specified via CLI
    # Default datafiles: Given in the test suite globally.
    # If no datafiles are specified at CLI or global level, error is thrown.
    # At Suite level execution, step-wise datafiles are not considered.
    if data_repository.has_key('ow_datafile'):
        data_file = data_repository['ow_datafile']
    else:
        data_file = efile_obj.get_data_files()[0]
    suite_resultfile = efile_obj.resultfile
    suite_execution_dir = os.path.dirname(suite_resultfile)
    junit_resultfile = (Utils.file_Utils.getNameOnly(suite_resultfile) +
                        "_tsjunit.xml")
    ws_results_execdir = efile_obj.results_execdir
    ws_logs_execdir = efile_obj.logs_execdir

    Utils.config_Utils.junit_file(junit_resultfile)

    suite_repository['suite_name'] = suite_name
    suite_repository['testsuite_filepath'] = testsuite_filepath
    suite_repository['operating_system'] = operating_system
    suite_repository['suite_title'] = suite_title
    suite_repository['suite_exectype'] = suite_exectype
    suite_repository['def_on_error_action'] = def_on_error_action
    suite_repository['def_on_error_value'] = def_on_error_value
    suite_repository['suite_execution_dir'] = suite_execution_dir
    suite_repository['suite_resultfile'] = suite_resultfile
    suite_repository['junit_resultfile'] = junit_resultfile
    suite_repository['ws_results_execdir'] = ws_results_execdir
    suite_repository['ws_logs_execdir'] = ws_logs_execdir
    suite_repository['suite_random_exec'] = suite_random_exec
    if data_file is not False:
        suite_repository['data_file'] = data_file

    # copying testsuite xml file to execution directory of this testsuite
    shutil.copy2(testsuite_filepath, suite_execution_dir)

    return suite_repository