def add_wl(wireless, ssid, case_name, result_file):
    log.info('start add wireless profile {}'.format(ssid))
    wireless.add(ssid=ssid)
    wireless.apply_and_ok()
    icon = wait_element(wl_pic("_move_mouse"), offset=(0, 10))
    tool.click(icon[0][0], icon[0][1], num=2)
    if wait_element(wl_pic("_{}".format(ssid))):
        log.info("wireless profile {} add success".format(ssid))
        steps = {
            'step_name': 'check all the configurations could be saved -- add',
            'result': 'Pass',
            'expect': '',
            'actual': '',
            'note': ''
        }
        update_cases_result(result_file, case_name, steps)
    else:
        error_pic = os.path.join(get_current_dir(), r'Test_Report', 'img',
                                 '{}+add1.png'.format(case_name))
        capture_screen(error_pic)
        steps = {
            'step_name': 'check all the configurations could be saved -- add',
            'result': 'Fail',
            'expect': 'saved',
            'actual': 'no exists',
            'note': '{}'.format(error_pic)
        }
        update_cases_result(result_file, case_name, steps)
        wireless.wl_set_apply()
        return False
    wireless.wl_set_apply()
    time.sleep(25)
    if check_wl("add_res"):
        log.info('new wireless profile connection success')
        steps = {
            'step_name':
            'check could successful connect to specified AP -- add',
            'result': 'Pass',
            'expect': '',
            'actual': '',
            'note': ''
        }
        update_cases_result(result_file, case_name, steps)
    else:
        error_pic = os.path.join(get_current_dir(), r'Test_Report', 'img',
                                 '{}+add2.png'.format(case_name))
        capture_screen(error_pic)
        steps = {
            'step_name':
            'check could successful connect to specified AP -- add',
            'result': 'Fail',
            'expect': 'connect',
            'actual': 'disconnect',
            'note': '{}'.format(error_pic)
        }
        update_cases_result(result_file, case_name, steps)
        close_wl_statistics()
        reset_setting(wireless, ssid)
        return False
    close_wl_statistics()
def delete_wl(wireless, ssid, case_name, result_file):
    log.info('start delete wireless profile {}'.format(ssid))
    wireless.delete(ssid=ssid)
    icon = wait_element(wl_pic("_move_mouse"), offset=(0, 10))
    tool.click(icon[0][0], icon[0][1], num=2)
    if not wait_element(wl_pic("_{}".format(ssid))):
        log.info("wireless profile {} delete success".format(ssid))
        steps = {
            'step_name': 'check selected profile could be deleted',
            'result': 'Pass',
            'expect': '',
            'actual': '',
            'note': ''
        }
        update_cases_result(result_file, case_name, steps)
    else:
        error_pic = os.path.join(get_current_dir(), r'Test_Report', 'img',
                                 '{}+delete1.png'.format(case_name))
        capture_screen(error_pic)
        steps = {
            'step_name': 'check selected profile could be deleted',
            'result': 'Fail',
            'expect': 'deleted',
            'actual': 'exists',
            'note': '{}'.format(error_pic)
        }
        update_cases_result(result_file, case_name, steps)
        wireless.wl_set_apply()
        reset_setting(wireless, ssid)
        return False
    wireless.wl_set_apply()
    time.sleep(25)
    if not check_wl("edit_res"):
        log.info('deleted wireless connection disconnection success')
        steps = {
            'step_name':
            'check thinpro will disconnect from the wireless network',
            'result': 'Pass',
            'expect': '',
            'actual': '',
            'note': ''
        }
        update_cases_result(result_file, case_name, steps)
    else:
        error_pic = os.path.join(get_current_dir(), r'Test_Report', 'img',
                                 '{}+delete2.png'.format(case_name))
        capture_screen(error_pic)
        steps = {
            'step_name':
            'check thinpro will disconnect from the wireless network',
            'result': 'Fail',
            'expect': 'disconnect',
            'actual': 'connect',
            'note': '{}'.format(error_pic)
        }
        update_cases_result(result_file, case_name, steps)
        close_wl_statistics()
        reset_setting(wireless, ssid)
        return False
    close_wl_statistics()
def pic_cut(folder, name):
    pic = os.path.join(
        common_function.get_current_dir(),
        'Test_Data/td_power_manager/verify_screensaver_diff_image',
        '{}/{}.png'.format(folder, name))
    capture_screen(pic)
    return pic
def login_domain_user(*args, **kwargs):
    case_name = kwargs.get("case_name")
    result_file = kwargs.get("report_file")
    log.info('2.1. Login with  !#$%^  Shanghai2010')
    time.sleep(10)
    domain_login(user_name='!#$%^', password="******")
    time.sleep(5)
    if check_account('start') or check_account('domain_icon'):
        steps = {
            'step_name': 'login domain account success',
            'result': 'Pass',
            'expect': 'login success',
            'actual': 'success',
            'note': ''
        }
        common_function.update_cases_result(result_file, case_name, steps)
    else:
        error_pic = os.path.join(common_function.get_current_dir(),
                                 r'Test_Report', 'img',
                                 'login_domain_user_result.png')
        picture_operator.capture_screen(error_pic)
        steps = {
            'step_name': 'login domain account success',
            'result': 'Fail',
            'expect': 'login success',
            'actual': 'fail',
            'note': '{}'.format(error_pic)
        }
        common_function.update_cases_result(result_file, case_name, steps)
        reset_all_settings(num=0)
        return False
예제 #5
0
    def __update_result(self):
        step = {
            'step_name': '',
            'result': 'PASS',
            'expect': '',
            'actual': '',
            'note': ''
        }
        step.update({'step_name': self.event_method_name})
        if not self.flag:
            if self.capture:
                path = get_current_dir(
                    "Test_Report/img/{}__{}_exception.png".format(
                        self.case_name, self.event_method_name))
                log.warning(f"capture path: {path}")
                capture_screen(path)
            step.update({
                'result':
                'Fail',
                'expect':
                self.error_msg.get("expect", ""),
                'actual':
                self.error_msg.get("actual", ""),
                'note':
                '{}__{}_exception.png'.format(self.case_name,
                                              self.event_method_name)
                if self.capture else ""
            })
        else:

            step.update(self.success_msg)
        update_cases_result(self.yml_path, self.case_name, step)
        return
def verify_two_account(*args, **kwargs):
    case_name = kwargs.get("case_name")
    result_file = kwargs.get("report_file")
    log.info('verify two accounts art listed')
    lock_screen()
    if check_account('with_vdi'):
        steps = {
            'step_name': 'verify two accounts art listed',
            'result': 'Pass',
            'expect': 'correct',
            'actual': 'correct',
            'note': ''
        }
        common_function.update_cases_result(result_file, case_name, steps)
    else:
        error_pic = os.path.join(
            common_function.get_current_dir(), r'Test_Report', 'img',
            'verify_domain_and_rdp_two_account_are_listed.png')
        picture_operator.capture_screen(error_pic)
        steps = {
            'step_name': 'verify two accounts art listed',
            'result': 'Fail',
            'expect': 'correct',
            'actual': 'wrong',
            'note': ''
        }
        common_function.update_cases_result(result_file, case_name, steps)
        reset_all_settings(num=0)
        return False
def add_domain_result(*args, **kwargs):
    log.info('check the result of step join tc domain')
    case_name = kwargs.get("case_name")
    result_file = kwargs.get("report_file")
    if check_icon('domain_login_user') or check_icon('domain_login_pwd'):
        steps = {
            'step_name': 'verify add domain and reboot success',
            'result': 'Pass',
            'expect': 'add domain success',
            'actual': 'success',
            'note': ''
        }
        common_function.update_cases_result(result_file, case_name, steps)
    else:
        error_pic = os.path.join(common_function.get_current_dir(),
                                 r'Test_Report', 'img',
                                 'verify_add_domain_result.png')
        picture_operator.capture_screen(error_pic)
        steps = {
            'step_name': 'verify add domain and reboot success',
            'result': 'Fail',
            'expect': 'add domain success',
            'actual': 'fail',
            'note': '{}'.format(error_pic)
        }
        common_function.update_cases_result(result_file, case_name, steps)
        domain_login(user_name='!#$%^', password="******")
        reset_all_settings(num=0)
        return False
def start(case_name, **kwargs):
    try:
        log.info('Begin to start test {}'.format(case_name))
        user_manager = vdi_connection.MultiUserManger()
        user = user_manager.get_a_available_key()
        rdp_server = user_manager.get_a_available_key('rdp win10')
        conn = vdi_connection.RDPLinux(user=user, rdp_server=rdp_server)
        log.info('user: {}, rdp_server: {}'.format(user, rdp_server))
        report_file = os.path.join(
            common_function.get_current_dir(), r'Test_Report',
            '{}.yaml'.format(common_function.check_ip_yaml()))
        common_function.new_cases_result(report_file, case_name)
        common_function.case_steps_run_control(steps_list,
                                               __name__,
                                               case_name=case_name,
                                               log=log,
                                               report_file=report_file,
                                               user=user,
                                               rdp_server=rdp_server,
                                               conn=conn,
                                               user_manager=user_manager)
    except:
        log.error(traceback.format_exc())
        error_pic = os.path.join(common_function.get_current_dir(),
                                 r'Test_Report', 'img',
                                 '{}.png'.format(case_name))
        picture_operator.capture_screen(error_pic)
        reset_all_settings(num=0)
        return False
def verify_cpu_mhz(mode, case_name, power_manager):
    try:
        if mode == 'ondemand':
            low_mhz = linux_get_cpu_mhz(mode)
            select_mode('performance', power_manager)
            time.sleep(15)
            high_mhz = linux_get_cpu_mhz('performance')
            log.info("ondemand mode:{}, performance mode:{}".format(
                low_mhz, high_mhz))
            return [high_mhz, low_mhz]
        else:
            high_mhz = linux_get_cpu_mhz(mode)
            select_mode('ondemand', power_manager)
            time.sleep(15)
            low_mhz = linux_get_cpu_mhz('ondemand')
            log.info("performance mode:{}, ondemand mode:{}".format(
                high_mhz, low_mhz))
            return [high_mhz, low_mhz]
    except:
        log.error(traceback.format_exc())
        error_pic = os.path.join(common_function.get_current_dir(),
                                 r'Test_Report', 'img',
                                 '{}.png'.format(case_name))
        capture_screen(error_pic)
        os.system("wmctrl -c 'Control Panel'")
        return '0'
예제 #10
0
def start(case_name, **kwargs):
    try:
        log.info('Begin to start case {}'.format(case_name))
        result_file = os.path.join(get_current_dir(), r'Test_Report',
                                   '{}.yaml'.format(check_ip_yaml()))
        new_cases_result(result_file, case_name)
        SwitchThinProMode(switch_to='admin')
        default_method = get_connection_method()
        wired = Wired()
        if dynamic_ip_check(case_name, result_file, wired) is False:
            reset_connection_method(default_method)
            return
        if dynamic_ip_ping(case_name, result_file) is False:
            reset_connection_method(default_method)
            return
        ip = get_ip()
        mask = wired.get_mask('eth0')
        gateway = wired.gateway()
        if static_ip_check(case_name, result_file, wired, ip, mask,
                           gateway) is False:
            reset_connection_method(default_method)
            return
        if static_ip_ping(case_name, result_file) is False:
            reset_connection_method(default_method)
            return
    except:
        log.error(traceback.format_exc())
        error_pic = os.path.join(get_current_dir(), r'Test_Report', 'img',
                                 '{}.png'.format(case_name))
        capture_screen(error_pic)
        os.system("wmctrl -c 'Control Panel'")
def step2(case_name):
    try:
        return check_icon('default')
    except:
        log.error(traceback.format_exc())
        error_pic = os.path.join(common_function.get_current_dir(),
                                 r'Test_Report', 'img',
                                 '{}.png'.format(case_name))
        capture_screen(error_pic)
        return
def step1(*args, **kwargs):
    case_name = kwargs.get("case_name")
    report_file = kwargs.get("report_file")
    SwitchThinProMode(switch_to='admin')
    log.info('set user password: 1')
    set_user_password()
    log.info('enable require password for general users')
    power_m = PowerManagerFactory("ScreenSaver")
    power_m.ScreenSaver.open_power_manager_from_control_panel()
    power_m.ScreenSaver.switch()
    power_m.ScreenSaver.set(
        pms=pms.ScreenSaver.Enable_Screensaver_and_Screen_Lock, radio="on")
    power_m.ScreenSaver.set(
        pms=pms.ScreenSaver.Require_password_for_general_users, radio="on")
    click_icon('ok', count=1)
    power_m.ScreenSaver.apply()
    time.sleep(5)
    power_m.ScreenSaver.close_all_power_manager()
    SwitchThinProMode(switch_to='user')
    log.info('start a web connection')
    web = WebConn([])
    web.open_firefox()
    if click_icon('firefox_title'):
        log.info('web connection success')
    lock_screen()
    pyautogui.press('enter')
    if click_icon('locked_dialog'):
        log.info('screen lock dialog shown')
        steps = {
            'step_name': "verify screen lock dialog shown",
            'result': 'Pass',
            'expect': 'show',
            'actual': 'show',
            'note': ''
        }
        common_function.update_cases_result(report_file, case_name, steps)
    else:
        error_pic = os.path.join(
            common_function.get_current_dir(), r'Test_Report', 'img',
            '{}+step1.png'.format(case_name.replace(' ', '_')))
        capture_screen(error_pic)
        steps = {
            'step_name': "verify screen lock dialog shown",
            'result': 'Fail',
            'expect': 'show',
            'actual': 'not show',
            'note': ''
        }
        common_function.update_cases_result(report_file, case_name, steps)
        reset_settings()
        return False
예제 #13
0
def check_layout(source):
    temp_pic = picture_operator.capture_screen(os.path.join(common_function.get_current_dir(), 'temp.png'), auto_fix=True)
    if temp_pic:
        flag = False
        if not os.path.exists(source):
            flag = True
        return [*picture_operator.compare_picture_auto_collect(temp_pic, source, auto_fix=True), flag]
 def wrapper(*args, **kwargs):
     try:
         return func(*args, **kwargs)
     except LogonError:
         traceback.print_exc()
         white_list = None
         cs = ""
         if args:
             vdi = args[0].__class__.__name__.lower()
             if "rdp" in vdi:
                 white_list = white_list_rdp
             elif "view" in vdi:
                 white_list = white_list_view
             elif "citrix" in vdi:
                 white_list = white_list_citrix
             except_pic_path = "{}/Test_Report".format(cf.get_current_dir())
             if not os.path.exists(except_pic_path):
                 os.makedirs(except_pic_path)
             cs = capture_screen(except_pic_path + "/{}_exception.png".format(vdi))
         flag = False
         if white_list:
             self = args[0]
             for k, v in white_list.items():
                 if v and k.lower() == "pic":
                     flag = self.check_picture(v, cs)
         if flag:
             raise Continue
         else:
             raise LogonError
def step1(case_name):
    try:
        power_m = PowerManagerFactory("ScreenSaver")
        power_m.ScreenSaver.open_power_manager_from_control_panel()
        power_m.ScreenSaver.switch()
        before = check_changed('activation')
        set_system_image(power_m)
        time.sleep(5)
        after = check_changed('activation1')
        power_m.ScreenSaver.close_all_power_manager()
        if before and after:
            return True
    except:
        log.error(traceback.format_exc())
        error_pic = os.path.join(common_function.get_current_dir(),
                                 r'Test_Report', 'img',
                                 '{}.png'.format(case_name))
        capture_screen(error_pic)
        return []
def start(case_name, *args, **kwargs):
    try:
        log.info('Begin to start test {}'.format(case_name))
        result_file = os.path.join(
            common_function.get_current_dir(), r'Test_Report',
            '{}.yaml'.format(common_function.check_ip_yaml()))
        common_function.new_cases_result(result_file, case_name)
        common_function.case_steps_run_control(steps_list,
                                               __name__,
                                               case_name=case_name,
                                               log=log,
                                               report_file=result_file)
        reset_settings()
        log.info('test case {} is end'.format(case_name))
    except:
        log.error(traceback.format_exc())
        error_pic = os.path.join(common_function.get_current_dir(),
                                 r'Test_Report', 'img',
                                 '{}.png'.format(case_name.replace(' ', '_')))
        capture_screen(error_pic)
        pass
def verify_remote_only(*args, **kwargs):
    case_name = kwargs.get("case_name")
    result_file = kwargs.get("report_file")
    user = kwargs.get('user')
    conn = kwargs.get('conn')
    start_remote('', conn=conn)
    time.sleep(5)
    log.info("verify only remote session's account is listed")
    require_pass_domain_users()
    SwitchThinProMode(switch_to='user')
    start_remote('logon', conn=conn)
    lock_screen()
    if check_account('no_vdi'):
        steps = {
            'step_name': "only one remote session's account is listed",
            'result': 'Pass',
            'expect': 'success',
            'actual': 'success',
            'note': ''
        }
        common_function.update_cases_result(result_file, case_name, steps)
        unlock_screen(r'sh\{}'.format(user), 'Shanghai2010')
    else:
        error_pic = os.path.join(common_function.get_current_dir(),
                                 r'Test_Report', 'img',
                                 '{}+verify_remote_only.png'.format(case_name))
        picture_operator.capture_screen(error_pic)
        steps = {
            'step_name': "only one remote session's account is listed",
            'result': 'Fail',
            'expect': 'success',
            'actual': 'fail',
            'note': '{}'.format(error_pic)
        }
        common_function.update_cases_result(result_file, case_name, steps)
        unlock_screen(r'sh.dto\!#$%^', 'Shanghai2010')
    start_remote('', conn=conn)
def event(event_method, *args, **kwargs):
    event_method_name = event_method.__name__
    step = {'step_name': '',
            'result': 'PASS',
            'expect': '',
            'actual': '',
            'note': ''}
    case_name = kwargs.get("case_name")
    yml_path = kwargs.get("yml_path", "")
    assert yml_path != "", 'yml_path error'
    event_params, event_dic = kwargs.get("event_params", ((), {}))
    call_back = kwargs.get("call_back", None)
    callback_params, callback_dic = kwargs.get("callback_parmas", ((), {}))
    inherit = kwargs.get("inherit", False)
    do_callback = kwargs.get("do_call_back", True)
    do_callback_false = kwargs.get("do_call_back_while_fail", False)
    res = event_method(*event_params, **event_dic)
    flag = True if res else False
    step.update({'step_name': event_method_name})
    if not res:
        path = common_function.get_current_dir("Test_Report/img/{}__{}_exception.png".format(case_name.replace(' ', '_'), event_method_name))
        picture_operator.capture_screen(path)
        error_msg = kwargs.get("error_msg", {})
        step.update({'result': 'Fail',
                     'expect': error_msg.get("expect", ""),
                     'actual': error_msg.get("actual", ""),
                     'note': '{}_exception.png'.format(event_method_name)})
    common_function.update_cases_result(yml_path, case_name, step)
    if do_callback and flag:
        if inherit and res:
            call_back(res, **callback_dic)
        elif call_back:
            print(*callback_params)
            call_back(*callback_params, **callback_dic)
    elif do_callback_false and not res:
        call_back(*callback_params, **callback_dic)
    return flag
def step2(*args, **kwargs):
    case_name = kwargs.get("case_name")
    report_file = kwargs.get("report_file")
    unlock_screen1('0')
    a = click_icon('error')
    time.sleep(5)
    pyautogui.press('enter')
    time.sleep(1)
    unlock_screen1('1')
    b = click_icon('error')
    c = click_icon('locked_dialog')
    if a and not b and not c:
        steps = {
            'step_name': "verify screen can be resumed successfully",
            'result': 'Pass',
            'expect': 'success',
            'actual': 'success',
            'note': ''
        }
        common_function.update_cases_result(report_file, case_name, steps)
    else:
        error_pic = os.path.join(
            common_function.get_current_dir(), r'Test_Report', 'img',
            '{}+step2.png'.format(case_name.replace(' ', '_')))
        capture_screen(error_pic)
        steps = {
            'step_name': "verify screen can be resumed successfully",
            'result': 'Fail',
            'expect': 'success',
            'actual': 'fail',
            'note': ''
        }
        common_function.update_cases_result(report_file, case_name, steps)
        unlock_screen('root', '1')
        reset_settings()
        return False
예제 #20
0
def into_admin(back=False):
    response1 = check_object_exist("all.png", back=back)
    response2 = check_object_exist("admin_password.png",
                                   offset=(60, 10),
                                   back=back)
    if response1:
        rs, shape = response1
        click(*rs)
        type_string("1")
        tap_key(keyboard.tab_key, 1)
        type_string("1")
        tap_key(keyboard.enter_key)
    elif response2:
        rs, shape = response2
        click(*rs)
        type_string("1", 0.5)
        tap_key(keyboard.enter_key)
    else:
        path = get_root_path("Test_Report/img", back=back)
        if not os.path.exists(path):
            os.mkdir(path)
        capture_screen(
            get_root_path("Test_Report/img/error_admin.jpg", back=back))
    return
def start(case_name, **kwargs):
    try:
        result_file = os.path.join(get_current_dir(), r'Test_Report',
                                   '{}.yaml'.format(check_ip_yaml()))
        log.info('Begin to start test {}'.format(case_name))
        new_cases_result(result_file, case_name)
        SwitchThinProMode(switch_to='admin')
        wireless = Wireless()
        wireless.wired_wireless_switch('off')
        time.sleep(5)
        wireless.open_network()
        wireless.switch_to_wireless_tab()
        if add_wl(wireless, "R1-TC_5G_n", case_name, result_file) is False:
            wireless.close_control_panel()
            return
        edit_value_dict = {
            "ssid": "R1-TC_2.4G_n_WPA2P",
            "authentication": "WPA/WPA2-PSK",
            "password": "******"
        }
        if edit_wl(wireless, "R1-TC_5G_n", edit_value_dict, case_name,
                   result_file) is False:
            wireless.close_control_panel()
            return
        if delete_wl(wireless, "R1-TC_2.4G_n_WPA2P", case_name, result_file):
            wireless.close_control_panel()
            return
        reset_setting(wireless, 'R1-TC_5G_n')
        reset_setting(wireless, 'R1-TC_2.4G_n_WPA2P')
        wireless.close_control_panel()
    except:
        log.error(traceback.format_exc())
        error_pic = os.path.join(get_current_dir(), r'Test_Report', 'img',
                                 '{}.png'.format(case_name))
        capture_screen(error_pic)
        os.system("wmctrl -c 'Control Panel'")
def start(case_name, **kwargs):
    SwitchThinProMode(switch_to='admin')
    name = check_powerpic.__name__
    # ip = get_ip()
    # ip = check_ip_yaml()
    # pathyml = get_root_path("Test_Report/{}.yaml".format(ip))
    base_name = get_report_base_name()
    pathyml = get_current_dir('Test_Report', base_name)
    new_cases_result(pathyml, case_name)
    estart_position = check_powerpic()
    flag = False
    with os.popen('/usr/bin/hptc-hwsw-id --hw') as f:
        rs = f.read()

        if rs:
            rs = rs.lower()
            if 't630' in rs or 't730' in rs:
                with os.popen('ethtool eth0') as fl:
                    res = fl.read()
                    if res:
                        if 'fibre' in res.lower():
                            flag = True
                        else:
                            with os.popen("ifconfig") as fl2:
                                r = fl2.read()
                                r = r.lower() if r else r
                                if 'eth0' in r and 'eth1' in r.lower():
                                    flag = True

    if estart_position is not None and flag == False:
        steps = {'step_name': name,
                 'result': 'PASS',
                 'expect': '',  # can be string or pic path
                 'actual': '',  # can be string or pic path
                 'note': ''}
        print("success")
    elif estart_position is None and flag == True:
        steps = {'step_name': name,
                 'result': 'PASS',
                 'expect': 'no estarlogo',  # can be string or pic path
                 'actual': 'no estarlogo',  # can be string or pic path
                 'note': 'no estarlogo beacuse of tp with fibre'}
        print("success")
    else:
        path = get_root_path("Test_Report/img")
        if not os.path.exists(path):
            os.mkdir(path)
        picture_operator.capture_screen(get_root_path("Test_Report/img/{}.jpg".format(name)))
        steps = {'step_name': name,
                 'result': 'Fail',
                 'expect': '',  # can be string or pic path
                 'actual': 'img/{}.jpg'.format(name),  # can be string or pic path
                 'note': ''}
        print("fail")
    update_cases_result(pathyml, case_name, steps)
    try:
        pathclose = get_root_path("Test_Data/td_precheck/Thinpro7.1/{}".format("power_close.png"))
        rs = picture_operator.wait_element(pathclose, 1, (3, 3))[0]
        click(*rs)
    except AssertionError as e:
        print(e)
    except Exception as f:
        print(f)
예제 #23
0
def events(testevent,
           params=None,
           callbacktest=None,
           cbparams=None,
           assertion=True,
           annotation=None,
           case_name='check_edocs_app'):
    """
    involve two test that if you want to execute some functions like a serious of events
    the method contains a event of logging yaml result
    :param testevent: function, a check test mainly;return a tuple((x,y),(x,y,z))
    :param params: string , a test pic name
    :param callbacktest: function
    :param cbparams:string,we offer a "fromtest" string for you to get the result return from testevent
    :param assertion:boolean that you estimate your result
    :param annotation:tuple:(funcname,picname) if fail, you can customise your error info into yaml note and console
                        eg.
    :return:
    """
    testname = testevent.__name__
    testparams = testevent(params)
    paramsname = params.split(".")[0]
    steps = {
        'step_name': testname,
        'result': 'PASS',
        'expect': "",  # can be string or pic path
        'actual': '',  # can be string or pic path
        'note': ""
    }
    if annotation:
        length = len(annotation)
        if callbacktest:
            if length == 2:
                a, b = annotation
                notes = "error in {}, events({},{}) : {}".format(
                    a, testname, params, b)
            elif length == 1:
                a = annotation[0]
                notes = "error in {}, events({},{}) : can't find {}".format(
                    a, testname, params, paramsname)
            else:
                notes = "error ! ,events({},{})".format(testname, params)
        else:
            if length == 2:
                a, b = annotation
                notes = "error in {}, events({},{}) : {}".format(
                    a, testname, params, b)
            elif length == 1:
                a = annotation[0]
                notes = "error in {}, events({},{}) : {} can't work or not matched".format(
                    a, testname, params, paramsname)
            else:
                notes = "error in, events({},{})".format(testname, params)
    else:
        notes = "error, events({},{}) ".format(testname, params)
    flag = True if testparams else False
    try:
        assert flag == assertion, notes
        print(testname, testparams, assertion, flag)
        if callbacktest:
            if cbparams.lower() == "fromtest":
                return callbacktest(testparams)
            else:
                return callbacktest(cbparams)
    except AssertionError as e:
        print(testname, testparams, assertion, flag)
        tname = "{}-{}".format(testname, params)
        path = get_root_path("Test_Report/img")
        if not os.path.exists(path):
            os.mkdir(path)
        capture_screen(get_root_path("Test_Report/img/{}.jpg".format(tname)))
        steps['result'] = "Fail"
        steps['actual'] = 'img/' + tname
        steps['note'] = notes
        raise AssertionError(notes + "???")
    finally:
        ip = get_ip()
        # path = get_root_path("Test_Report/{}.yaml".format(ip))
        base_name = get_report_base_name()
        path = get_current_dir('Test_Report', base_name)
        update_cases_result(path, case_name, steps)
    return True
def start(case_name, **kwargs):
    try:
        result_file = os.path.join(
            common_function.get_current_dir(), r'Test_Report',
            '{}.yaml'.format(common_function.check_ip_yaml()))
        log.info('Begin to start test {}'.format(case_name))
        new_cases_result(result_file, case_name)
        SwitchThinProMode(switch_to='admin')
        if check_sleep_status():
            steps = {
                'step_name': 'check "Minutes before system sleep"',
                'result': 'Pass',
                'expect': 'enable',
                'actual': 'it is enable',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
        else:
            steps = {
                'step_name': 'check "Minutes before system sleep"',
                'result': 'Fail',
                'expect': 'enable',
                'actual': 'not enable',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
            log.info('{} end'.format(case_name))
            return False
        last_time_gap = int(sleep_method1())
        if last_time_gap > 5:
            steps = {
                'step_name': 'check tc go to sleep after 1 minute',
                'result': 'Pass',
                'expect': 'sleep',
                'actual': 'TC go to sleep',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
        else:
            steps = {
                'step_name': 'check tc go to sleep after 1 minute',
                'result': 'Fail',
                'expect': 'sleep',
                'actual': 'TC not go to sleep',
                'note': 'sleep time: {}'.format(last_time_gap)
            }
            update_cases_result(result_file, case_name, steps)
            os.system("wmctrl -c 'Control Panel'")
            log.info('{} end'.format(case_name))
            return False
        last_time_gap = int(sleep_method2(sleep_desktop))
        if last_time_gap > 5:
            steps = {
                'step_name': 'check tc go to sleep by desktop',
                'result': 'Pass',
                'expect': 'sleep',
                'actual': 'TC go to sleep',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
        else:
            error_pic = os.path.join(
                common_function.get_current_dir(), r'Test_Report', 'img',
                '{}+sleep_by_desktop.png'.format(case_name.replace(' ', '_')))
            capture_screen(error_pic)
            steps = {
                'step_name': 'check tc go to sleep by desktop',
                'result': 'Fail',
                'expect': 'sleep',
                'actual': 'TC not go to sleep',
                'note': '{}'.format(error_pic)
            }
            update_cases_result(result_file, case_name, steps)
            log.info('{} end'.format(case_name))
            return False
        last_time_gap = int(sleep_method2(sleep_start_menu))
        if last_time_gap > 5:
            steps = {
                'step_name': 'check tc go to sleep by start menu',
                'result': 'Pass',
                'expect': 'sleep',
                'actual': 'TC go to sleep',
                'note': 'sleep time: {}'.format(last_time_gap)
            }
            update_cases_result(result_file, case_name, steps)
        else:
            error_pic = os.path.join(
                common_function.get_current_dir(), r'Test_Report', 'img',
                '{}+sleep_by_start_menu.png'.format(case_name.replace(
                    ' ', '_')))
            capture_screen(error_pic)
            steps = {
                'step_name': 'check tc go to sleep by start menu',
                'result': 'Fail',
                'expect': 'sleep',
                'actual': 'TC not go to sleep',
                'note': '{}'.format(error_pic)
            }
            update_cases_result(result_file, case_name, steps)
            log.info('{} end'.format(case_name))
            return False
        log.info('{} end'.format(case_name))
    except:
        log.error(traceback.format_exc())
        error_pic = os.path.join(common_function.get_current_dir(),
                                 r'Test_Report', 'img',
                                 '{}.png'.format(case_name.replace(' ', '_')))
        capture_screen(error_pic)
        os.system("wmctrl -c 'Control Panel'")
        pass
예제 #25
0
def start(case_name, **kwargs):
    try:
        result_file = os.path.join(common_function.get_current_dir(),
                                   r'Test_Report', '{}.yaml'.format(common_function.check_ip_yaml()))
        log.info('Begin to start test {}'.format(case_name))
        new_cases_result(result_file, case_name)
        SwitchThinProMode(switch_to='admin')
        power_manager = PowerManagerFactory("AC")
        if not power_manager.AC.open_power_manager_from_control_panel():
            steps = {
                'step_name': 'verify the cpu run with ondemand on AC',
                'result': 'Fail',
                'expect': '',
                'actual': '',
                'note': 'power manager open fail'}
            update_cases_result(result_file, case_name, steps)
            return False
        power_manager.AC.switch()
        default_mode = get_cup_mode()
        cpu_mhz_list = []
        loop_result = []
        for i in range(3):
            cpu_mode = get_cup_mode()
            value = verify_cpu_mhz(cpu_mode, case_name, power_manager)
            cpu_mhz_list.append(abs(float(value[0])-float(value[1])))
            loop_result.append(value)
            time.sleep(2)
        reset_settings(default_mode, power_manager)
        power_manager.AC.close_all_power_manager()
        log.info('cpu mhz list: {}'.format(cpu_mhz_list))
        value = max(cpu_mhz_list)
        if default_mode == 'ondemand':
            steps = {
                'step_name': 'verify the cpu run with ondemand on AC',
                'result': 'Pass',
                'expect': 'ondemand',
                'actual': 'ondemand',
                'note': ''}
            update_cases_result(result_file, case_name, steps)
        else:
            steps = {
                'step_name': 'verify the cpu run with ondemand on AC',
                'result': 'Fail',
                'expect': 'ondemand',
                'actual': '{}'.format(default_mode),
                'note': ''}
            update_cases_result(result_file, case_name, steps)
        if float(value) > 500:
            steps = {
                'step_name': 'check the cpu mhz',
                'result': 'Pass',
                'expect': '>500',
                'actual': '{}'.format(value),
                'note': ''}
            update_cases_result(result_file, case_name, steps)
        else:
            steps = {
                'step_name': 'check the cpu mhz',
                'result': 'Fail',
                'expect': '>500',
                'actual': '{}'.format(value),
                'note': 'loop 3 times result:{}'.format(loop_result)}
            update_cases_result(result_file, case_name, steps)
        log.info('{} end'.format(case_name))
    except:
        log.error(traceback.format_exc())
        error_pic = os.path.join(common_function.get_current_dir(),
                                 r'Test_Report', 'img', '{}.png'.format(case_name))
        capture_screen(error_pic)
        power_manager = PowerManagerFactory("AC")
        power_manager.AC.close_all_power_manager()
        pass
 def error_snapshot(pic_name):
     pic = datetime.datetime.today().strftime('%Y-%m-%d_%H-%M-%S') + '_' + pic_name + '.jpg'
     name = os.path.join(cf.get_current_dir(), 'Test_Report', pic)
     capture_screen(name)
예제 #27
0
def main():
    # show_desktop()
    if os.path.exists(get_current_dir('flag.txt')):
        with open(get_current_dir('flag.txt')) as f:
            test_flag = f.read()
            if 'TEST FINISHED' in test_flag.upper():
                return
    if not os.path.exists('time.txt'):
        with open('time.txt', 'w') as f:
            f.write(time.ctime())
    prepare_for_framework()
    additional_path = get_current_dir('Test_Data', 'additional.yml')
    file_obj = YamlOperator(additional_path)
    content = file_obj.read()
    site = content.get('AutoDash_Site')
    if not site:
        load_data_from_ftp()
        script_name = os.path.basename(__file__).split('.')[0]
        add_linux_script_startup([script_name])
        check_water_mark()
    path = get_current_dir('reboot.txt')
    if not os.path.exists(path):
        with open(path, 'w+') as f:
            f.write("0")
        time.sleep(5)
        if os.path.exists(path):
            SwitchThinProMode("admin")
            os.popen('reboot')
            time.sleep(30)
    if not os.path.exists(get_current_dir('Test_Report')):
        os.mkdir(get_current_dir('Test_Report'))
    test_data_path = os.path.join(get_current_dir(), 'Test_Data')
    with open(get_current_dir('flag.txt'), 'w') as f:
        f.write('testing')
    if not os.path.exists(os.path.join(test_data_path, 'script.yml')):
        log.info('script.yml not exist, please check if no cases planned')
        with open(get_current_dir('flag.txt'), 'w') as f:
            f.write('test finished')
        return
    with open(os.path.join(test_data_path, 'script.yml'), 'r') as f:
        scripts = yaml.safe_load(f)
    with open(os.path.join(test_data_path, 'additional.yml'), 'r') as f:
        additional = yaml.safe_load(f)
    for script in scripts:
        script_name, script_status = list(script.items())[0]
        if script_status.upper() == 'NORUN':
            log.info('Begin to Test case {}'.format(script_name))
            try:
                if need_reboot() == 1:
                    change_reboot_status(0)
                    reboot_command()
                memory_check(limit=MEMORY_LIMIT)
                globals()[script_name.split('__')[0]].start(
                    case_name=script_name.split('__')[1], kwargs=additional)
                script[script_name] = 'Finished'
                with open(os.path.join(test_data_path, 'script.yml'),
                          'w') as f:
                    yaml.safe_dump(scripts, f)
            except MemoryNotSufficient as e:
                log.debug(e)
                log.debug("start reboot")
                reboot_command()
            except:
                with open(get_current_dir('Test_Report', 'debug.log'),
                          'a') as f:
                    f.write(traceback.format_exc())
                capture_screen(
                    get_current_dir(
                        'Test_Report',
                        'img',
                        '{}.jpg'.format(script_name.split('__')[1]),
                    ))
                script[script_name] = 'Finished'
                with open(os.path.join(test_data_path, 'script.yml'),
                          'w') as f:
                    yaml.safe_dump(scripts, f)
                steps = {
                    'step_name': 'case exception',
                    'result': 'Fail',
                    'expect': '',  # can be string or pic path
                    'actual': 'img/{}.jpg'.format(script_name.split('__')[1]),
                    'note': traceback.format_exc()
                }
                base_name = get_report_base_name()
                report_file = get_current_dir('Test_Report', base_name)
                # result_file = get_current_dir(r'Test_Report', '{}.yaml'.format(check_ip_yaml()))
                update_cases_result(report_file,
                                    script_name.split('__')[1], steps)
        else:
            log.info('Test case {} status is Finished, Skip test'.format(
                script_name))
    if os.path.exists(path):
        if need_reboot() == 0:
            change_reboot_status(9)
            log.info("Start Reboot before Report")
            reboot_command()
        else:
            os.remove(path)
    if site:
        share_folder = content.get('share_folder')
        host = share_folder.split('/')[0]
        folder_path = '/'.join(share_folder.split('/')[1:])
        user = content.get('user')
        password = content.get('password')
        flag_path = '/{}/{}.txt'.format(folder_path, site)
        log.info('end_flag: {}'.format(flag_path))

        with open(get_current_dir('{}.txt'.format(site)), 'w') as f:
            f.write('test finished')
        ftp = FTPUtils(host, user, password)
        ftp.ftp.cwd('ThinPro_Automation_Site')
        local_folder = get_current_dir('Test_Report')
        ftp_folder = r'/{}/Test_Report'.format(folder_path)

        num = 0
        while True:
            try:

                ftp = FTPUtils(host, user, password)
                log.info('upload Test_Report folder to ftp')
                log.info(local_folder)
                log.info(ftp_folder)
                ftp.new_dir(ftp_folder)
                local_report = get_current_dir('Test_Report',
                                               '{}.yaml'.format(site))
                ftp_report = '/{}/Test_Report/{}.yaml'.format(
                    folder_path, site)
                ftp.upload_file(local_report, ftp_report)
                ftp.upload_file(get_current_dir(r"{}.txt".format(site)),
                                flag_path)
                break
            except:
                if num > 30:
                    traceback.print_exc()
                    break
                else:
                    num += 5
                    time.sleep(5)
    else:
        with open(get_current_dir('flag.txt'), 'w') as f:
            f.write('test finished')
        with open('time.txt') as f:
            start = f.read()
        end = time.ctime()
        report = email_tool.GenerateReport(start, end)
        report.generate()
        file = email_tool.zip_dir()
        log.info('zipped file name: {}'.format(file_obj))
        additional_email = additional.get('email') if additional.get(
            'email') else ''
        email_tool.send_mail(
            recipient=['*****@*****.**', additional_email],
            subject='Automation Report Linux {}'.format(
                zip_file_name(get_report_number(), get_report_value())),
            attachment=file)
        os.remove(file)
        os.remove('time.txt')
        try:
            collect_report()
        except Exception as e:
            print(e)
            log.error(e)
예제 #28
0
            if cbparams.lower() == "fromtest":
                return callbacktest(testparams)
            else:
                return callbacktest(cbparams)
    except AssertionError as e:
        print(testname, testparams, assertion, flag)
        tname = "{}-{}".format(testname, params)
        path = get_root_path("Test_Report/img")
        if not os.path.exists(path):
            os.mkdir(path)
        capture_screen(get_root_path("Test_Report/img/{}.jpg".format(tname)))
        steps['result'] = "Fail"
        steps['actual'] = 'img/' + tname
        steps['note'] = notes
        raise AssertionError(notes + "???")
    finally:
        ip = get_ip()
        # path = get_root_path("Test_Report/{}.yaml".format(ip))
        base_name = get_report_base_name()
        path = get_current_dir('Test_Report', base_name)
        update_cases_result(path, case_name, steps)
    return True


if __name__ == '__main__':
    path = get_root_path("Test_Report/img")
    if not os.path.exists(path):
        os.mkdir(path)
    capture_screen(get_root_path("Test_Report/img/{}.jpg".format("name")))
    print("")
def start(case_name, **kwargs):
    value_ls = get_defaule()
    try:
        log.info('Begin to start test {}'.format(case_name))
        result_file = os.path.join(
            common_function.get_current_dir(), r'Test_Report',
            '{}.yaml'.format(common_function.check_ip_yaml()))
        new_cases_result(result_file, case_name)
        SwitchThinProMode(switch_to='admin')
        source_pic1 = os.path.join(
            common_function.get_current_dir(),
            'Test_Data/td_power_manager/verify_screensaver_diff_image',
            'source_pic/pic.jpg')
        source_img1, source_size1 = open_pic(source_pic1)
        source_data1 = get_pic_color(source_img1, get_xy(source_size1))
        log.info('pic.jpg data {}'.format(source_data1))
        source_pic2 = os.path.join(
            common_function.get_current_dir(),
            'Test_Data/td_power_manager/verify_screensaver_diff_image',
            'source_pic/pic1.png')
        source_img2, source_size2 = open_pic(source_pic2)
        source_data2 = get_pic_color(source_img2, get_xy(source_size2))
        log.info('pic1.png data {}'.format(source_data2))
        power_m = PowerManagerFactory("ScreenSaver")
        if not power_m.open_power_manager_from_control_panel():
            log.info('try open power manager again')
            power_m.open_power_manager_from_control_panel()
        power_m.ScreenSaver.switch()
        data1, data2 = step1(power_m, source_size1, source_size2)
        log.info(f"data1 type: {type(data1)}")
        log.info(f"source data1 type: {type(source_data1)}")
        log.info([data1, data2])
        log.info([source_data1, source_data2])
        if [data1, data2] == [source_data1, source_data2] or [
                data2, data1
        ] == [source_data1, source_data2]:
            steps = {
                'step_name': 'verify new slideshow',
                'result': 'Pass',
                'expect': 'slideshow',
                'actual': 'slideshow',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
        else:
            log.debug(
                "picture not match",
                common_function.get_current_dir(
                    'Test_Report', 'img',
                    '{}_slideshow.png'.format(case_name.replace(' ', '_'))))
            steps = {
                'step_name': 'verify new slideshow',
                'result': 'Fail',
                'expect': 'slideshow',
                'actual': 'no slideshow',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
            reset_settings(value_ls)
            return False
        data3, data4 = step2(power_m)
        log.info(f"data3 type: {type(data3)}")
        log.info(f"source data1 type: {type(source_data1)}")
        log.info([data3, data4])
        log.info([source_data1, source_data2])
        if [data3, data4] == [source_data1, source_data2] or [
                data4, data3
        ] == [source_data1, source_data2]:
            steps = {
                'step_name': 'verify new slideshowstretch',
                'result': 'Pass',
                'expect': 'slideshowstrech',
                'actual': 'slideshowstrech',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
        else:
            log.debug(
                "picture not match",
                common_function.get_current_dir(
                    'Test_Report', 'img', '{}_slideshowstretch.png'.format(
                        case_name.replace(' ', '_'))))
            steps = {
                'step_name': 'verify new slideshow',
                'result': 'Fail',
                'expect': 'slideshow',
                'actual': 'no slideshowstrech',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
            reset_settings(value_ls)
            return False
        if step3(power_m, 4):
            steps = {
                'step_name': 'verify new center show',
                'result': 'Pass',
                'expect': 'center',
                'actual': 'center',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
        else:
            log.debug(
                "picture not match",
                common_function.get_current_dir(
                    'Test_Report', 'img',
                    '{}_center.png'.format(case_name.replace(' ', '_'))))
            steps = {
                'step_name': 'verify new center show',
                'result': 'Fail',
                'expect': 'center',
                'actual': 'no center',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
            locked_wake_up()
            time.sleep(5)
            reset_settings(value_ls)
            return False
        locked_wake_up()
        time.sleep(5)
        data = step4(power_m, source_size1)
        if data == source_data1:
            steps = {
                'step_name': 'verify new expand show',
                'result': 'Pass',
                'expect': 'expand',
                'actual': 'expand',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
        else:
            log.debug(
                "picture not match",
                common_function.get_current_dir(
                    'Test_Report', 'img',
                    '{}_expand.png'.format(case_name.replace(' ', '_'))))
            steps = {
                'step_name': 'verify new expand show',
                'result': 'Fail',
                'expect': 'expand',
                'actual': 'no expand',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
            reset_settings(value_ls)
            return False
        data5 = step5(power_m)
        if data5 == source_data2:
            steps = {
                'step_name': 'verify new stretch show',
                'result': 'Pass',
                'expect': 'stretch',
                'actual': 'stretch',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
        else:
            log.debug(
                "picture not match",
                common_function.get_current_dir(
                    'Test_Report', 'img',
                    '{}_stretch.png'.format(case_name.replace(' ', '_'))))
            steps = {
                'step_name': 'verify new stretch show',
                'result': 'Fail',
                'expect': 'stretch',
                'actual': 'no stretch',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
            reset_settings(value_ls)
            return False
        if step6(power_m, 7):
            steps = {
                'step_name': 'verify new tile show',
                'result': 'Pass',
                'expect': 'tile',
                'actual': 'tile',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
        else:
            log.debug(
                "picture not match",
                common_function.get_current_dir(
                    'Test_Report', 'img',
                    '{}_tile.png'.format(case_name.replace(' ', '_'))))
            steps = {
                'step_name': 'verify new tile show',
                'result': 'Fail',
                'expect': 'tile',
                'actual': 'no tile',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
            locked_wake_up()
            time.sleep(5)
            reset_settings(value_ls)
            return False
        locked_wake_up()
        time.sleep(5)
        power_m.close_all_power_manager()
        reset_settings(value_ls)
        log.info('{} is end'.format(case_name))
    except:
        reset_settings(value_ls)
        log.error(traceback.format_exc())
        error_pic = os.path.join(common_function.get_current_dir(),
                                 r'Test_Report', 'img',
                                 '{}.png'.format(case_name.replace(' ', '_')))
        capture_screen(error_pic)
        os.popen("hptc-control-panel --term")
        pass
def start(case_name, **kwargs):
    try:
        result_file = os.path.join(
            common_function.get_current_dir(), r'Test_Report',
            '{}.yaml'.format(common_function.check_ip_yaml()))
        log.info('Begin to start test {}'.format(case_name))
        new_cases_result(result_file, case_name)
        SwitchThinProMode(switch_to='admin')
        if 'mt' not in get_platform().lower():
            log.warning('There is no need to run this case on DTC')
            step1 = {
                'step_name': 'check current platform',
                'result': 'Fail',
                'expect': '',
                'actual': '',
                'note': 'current platform is not mtc, skip the case'
            }
            common_function.update_cases_result(result_file, case_name, step1)
            return
        power_manager = PowerManagerFactory("Battery")
        power_manager.Battery.open_power_manager_from_control_panel()
        power_manager.Battery.switch()
        default_mode = get_cup_mode()
        cpu_mhz_list = []
        loop_result = []
        for i in range(3):
            cpu_mode = get_cup_mode()
            value = verify_cpu_mhz(cpu_mode, case_name, power_manager)
            cpu_mhz_list.append(abs(float(value[0]) - float(value[1])))
            loop_result.append(value)
            time.sleep(2)
        reset_settings(default_mode, power_manager)
        power_manager.Battery.close_all_power_manager()
        log.info('cpu mhz list: {}'.format(cpu_mhz_list))
        value = max(cpu_mhz_list)
        if default_mode == 'ondemand':
            steps = {
                'step_name': 'verify the cpu run with ondemand on Battery',
                'result': 'Pass',
                'expect': 'ondemand',
                'actual': 'ondemand',
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
        else:
            steps = {
                'step_name': 'verify the cpu run with ondemand on Battery',
                'result': 'Fail',
                'expect': 'ondemand',
                'actual': '{}'.format(default_mode),
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
        if float(value) > 500:
            steps = {
                'step_name': 'check the cpu mhz',
                'result': 'Pass',
                'expect': '>500',
                'actual': '{}'.format(value),
                'note': ''
            }
            update_cases_result(result_file, case_name, steps)
        else:
            steps = {
                'step_name': 'check the cpu mhz',
                'result': 'Fail',
                'expect': '>500',
                'actual': '{}'.format(value),
                'note': 'loop 3 times result:{}'.format(loop_result)
            }
            update_cases_result(result_file, case_name, steps)
        log.info('{} end'.format(case_name))
    except:
        log.error(traceback.format_exc())
        error_pic = os.path.join(common_function.get_current_dir(),
                                 r'Test_Report', 'img',
                                 '{}.png'.format(case_name))
        capture_screen(error_pic)
        os.system("wmctrl -c 'Control Panel'")
        pass