Example #1
0
class Base():
    def __init__(self, driver):
        self.driver = driver
        # log = Logger(loglevel=1, logger="fox").getlog()
        self.log = Logger(loglevel=1, logger="chrome").getlog()

    def findele(self, *args):
        try:
            print(args)
            self.log.info("通过" + args[0] + "定位,元素是" + args[1])
            return self.driver.find_element(*args)
        except:
            self.log.error("定位元素失败")

    def click(self, args):
        self.findele(args).click()

    def sendkey(self, args, value):
        self.findele(args).send_keys(value)

    def js(self, str):
        self.driver.execute_script(str)

    def url(self):
        return self.driver.current_url

    def back(self):
        return self.driver.back()

    def forword(self):
        self.driver.forword()

    def quit(self):
        self.driver.quit()
Example #2
0
 def setUpClass(cls):
     Log = Logger()
     Log.info("========%s测试开始:========" % __class__.__name__)
     nowtime = time.strftime("%Y%m%d%H%M")
     driver = webdriver.Remote(appium_url, desired_caps)
     cls.nowtime = nowtime
     cls.Log = Log
     cls.driver = driver
Example #3
0
 def setUpClass(cls):
     Log = Logger()
     Log.info("========%s测试开始:========" % __class__.__name__)
     nowtime = time.strftime("%Y%m%d%H%M")
     driver = webdriver.Remote(appium_url, desired_caps)
     cls.nowtime=nowtime
     cls.Log=Log
     cls.driver=driver
     # 判断是否有弹窗,并关闭
     Main(driver).close_ad()
     Main(driver).close_update()
     Mine(driver).stay_location()
     Main(driver).into_Mainpage(1)
Example #4
0
class TestAll(unittest.TestCase):
    def setUp(self):
        self.Log = Logger()
        self.r = Read_xls(test_data_path)

    def tearDown(self):
        self.Log.close()

    @data(*booknames)
    def test_run(self, bookname):
        writedata.creattable(bookname)
        test_data = []
        self.test_datas = self.r.read_data(bookname, 1)
        keys_list = self.r.read_data(bookname, 0)[0]
        if mode == 1:
            Logger().info("[mode:1],本次测试执行基本流测试用例")
            for i in range(len(self.test_datas)):
                if self.test_datas[i][1] == 1:
                    test_data.append(self.test_datas[i])
                    i += 1
                else:
                    continue
        elif mode == 0:
            Logger().info("[mode:0],本次测试执行全部测试用例")
            test_data = self.test_datas
        datas = []
        datas.append(keys_list)
        datas.append(test_data)
        keys_list = datas[0]
        test_data = datas[1]
        self.header = ["case_num", "explain", "result", "data",
                       "code"]  # 第四个开始设置你需要的值(要和报文字典的key值对应)
        for n in range(len(self.header)):
            writedata.write_onlydata(0, n, self.header[n])
        for tdata in test_data:
            global row
            ruselt_path = Project_path.TestResult_path + now + self.__class__.__name__ + ".xls"
            testcase_num = tdata[0]
            explain = tdata[2]
            url = tdata[3]
            type = tdata[4]
            expectation = tdata[5]
            m = 6  # 前面有几个非参数字段这里写几
            data = Change().list_dict(tdata, keys_list, m)
            result = Request(host).request(url, data, type)
            try:
                self.assertEqual(result["code"], expectation, "与期望值不符")
                test_result = "Pass"
            except Exception as e:
                self.Log.error("第%s条用例[%s]测试失败【%s】" %
                               (testcase_num, explain, e))
                test_result = "Faile"
                raise e
            else:
                self.Log.info("第%s条用例[%s]测试通过" % (testcase_num, explain))
            finally:
                writedata.write_onlydata(row, 0, testcase_num)
                writedata.write_onlydata(row, 1, explain)
                writedata.write_onlydata(row, 2, test_result)
                writedata.write_onlydata(row, 3, str(result))
                for h in range(len(self.header)):
                    if self.header[h] in list(result.keys()):
                        writedata.write_onlydata(row, h,
                                                 str(result[self.header[h]]))
                row += 1
                writedata.save_excel(ruselt_path)
        row = 1
def start(case_name, **kwargs):
    log = Logger()
    log.info("{:-^80}".format("start a case test"))
    log.info("case name:" + case_name)
    report_file = os.path.join(cf.get_current_dir(), "Test_Report",
                               "{}.yaml".format(cf.check_ip_yaml()))
    cf.new_cases_result(report_file, case_name)
    session = "win10"
    root_password = '******'
    user_password = '******'
    time.sleep(0.5)

    log.info(" -------------------------------------------step 1")
    if not step_1(log=log):
        step1_report = {
            'step_name': 'step1',
            'result': 'Fail',
            'expect': 'set screen saver default success',
            'actual': 'set screen saver default fail',
            'note': ''
        }
        cf.update_cases_result(report_file, case_name, step1_report)
        cf.SwitchThinProMode("admin")
        log.error("{:+^80}".format("test case fail"))
        return False
    step1_report = {
        'step_name': 'step1',
        'result': 'Pass',
        'expect': 'set screen saver default and switch to user success',
        'actual': 'set screen saver default and switch to user success',
        'note': ''
    }
    cf.update_cases_result(report_file, case_name, step1_report)

    log.info(" -------------------------------------------step 2")
    result_2 = step_2(log=log, case_name=case_name)
    if not result_2[0]:
        step2_report = {
            'step_name': 'step2',
            'result': 'Fail',
            'expect': 'no need to input any accounts to unlock the screen',
            'actual': 'fail',
            'note': '{}'.format(result_2[1])
        }
        cf.update_cases_result(report_file, case_name, step2_report)
        log.error("{:+^80}".format("test case fail"))
        cf.SwitchThinProMode("admin")
        return False
    step2_report = {
        'step_name': 'step2',
        'result': 'pass',
        'expect': 'no need to input any accounts to unlock the screen',
        'actual': 'success',
        'note': '{}'.format(result_2[1])
    }
    cf.update_cases_result(report_file, case_name, step2_report)

    log.info(" ---------------------------------------------step 3_4")
    result_3_4 = step_3_4(log=log, case_name=case_name)
    if not result_3_4[0]:
        step4_report = {
            'step_name': 'step 3_4',
            'result': 'Fail',
            'expect': 'screen can be unlock by the credentals',
            'actual': 'fail',
            'note': '{}'.format(result_3_4[1])
        }
        cf.update_cases_result(report_file, case_name, step4_report)
        cf.SwitchThinProMode("admin")
        log.error("{:+^80}".format("test case fail"))
        return False
    step4_report = {
        'step_name': 'step 3_4',
        'result': 'pass',
        'expect': 'screen can be unlock by the credentals',
        'actual': 'success',
        'note': '{}'.format(result_3_4[1])
    }
    cf.update_cases_result(report_file, case_name, step4_report)

    log.info(" -------------------------------------------step 5_6")
    result_5_6 = step_5_6(log=log,
                          session=session,
                          root_password=root_password,
                          case_name=case_name)
    if not result_5_6[0]:
        step6_report = {
            'step_name':
            'step 5_6',
            'result':
            'fail',
            'expect':
            "'user' is not in the locked accounts, 'root' can not unlock the remote session,"
            " screen can be unlock by the credentials",
            'actual':
            'fail',
            'note':
            '{}'.format(result_5_6[1])
        }
        cf.update_cases_result(report_file, case_name, step6_report)
        cf.SwitchThinProMode("admin")
        log.error("{:+^80}".format("test case fail"))
        return False
    step6_report = {
        'step_name':
        'step 5_6',
        'result':
        'pass',
        'expect':
        "'user' is not in the locked accounts, 'root' can not unlock the remote session,"
        " screen can be unlock by the credentials",
        'actual':
        'success',
        'note':
        '{}'.format(result_5_6[1])
    }
    cf.update_cases_result(report_file, case_name, step6_report)

    log.info("-------------------------------------------step 7_8")
    result_7_8 = step_7_8(log=log,
                          user_password=user_password,
                          case_name=case_name)
    if not result_7_8[0]:
        step8_report = {
            'step_name': 'step 7_8',
            'result': 'fail',
            'expect': "'user' account can unlock the screen",
            'actual': 'fail',
            'note': '{}'.format(result_7_8[1])
        }
        cf.update_cases_result(report_file, case_name, step8_report)
        os.system("mclient --quiet set root/screensaver/lockScreenUser 0"
                  )  # disable require password for general users
        os.system("mclient commit")
        cf.SwitchThinProMode("admin")
        log.error("{:+^80}".format("test case fail"))
        return False
    step8_report = {
        'step_name': 'step 7_8',
        'result': 'pass',
        'expect': "'user' account can unlock the screen",
        'actual': 'success',
        'note': '{}'.format(result_7_8[1])
    }
    cf.update_cases_result(report_file, case_name, step8_report)

    log.info(" ------------------------------------------- step 9")
    result_9 = step_9(log=log,
                      user_password=user_password,
                      case_name=case_name)
    if not result_9[0]:
        step9_report = {
            'step_name': 'step9',
            'result': 'fail',
            'expect':
            "both 'user' and the login account can unlock the screen",
            'actual': 'fail',
            'note': '{}'.format(result_9[1])
        }
        cf.update_cases_result(report_file, case_name, step9_report)
        os.system("mclient --quiet set root/screensaver/lockScreenUser 0"
                  )  # disable require password for general users
        os.system("mclient commit")
        cf.SwitchThinProMode("admin")
        log.error("{:+^80}".format("test case fail"))
        return False
    step9_report = {
        'step_name': 'step9',
        'result': 'pass',
        'expect': "both 'user' and the login account can unlock the screen",
        'actual': 'success',
        'note': '{}'.format(result_9[1])
    }
    cf.update_cases_result(report_file, case_name, step9_report)

    os.system("mclient --quiet set root/screensaver/lockScreenUser 0"
              )  # disable require password for general users
    os.system("mclient commit")
    log.info("test case pass")
    cf.SwitchThinProMode("admin")
    log.info("{:+^80}".format("this case test over"))
    return True
Example #6
0
class Interfere():
    def __init__(self):
        self.Log=Logger()
        self.r = Read_xls(test_data_path)
        self.writedata = WriteExcel()
    def sheet_books(self):
        self.books = self.r.get_workbook()
        return self.books
    def get_data(self,bookname):
        # self.r = Read_xls(test_data_path)
        # books = self.r.get_workbook()
        test_data=[]
        self.test_datas = self.r.read_data(bookname, 1)
        keys_list = self.r.read_data(bookname, 0)[0]
        if mode == 1:
            Logger().info("[mode:1],本次测试执行基本流测试用例")
            for i in range(len(self.test_datas)):
                if self.test_datas[i][1] == 1:
                    test_data.append(self.test_datas[i])
                    i += 1
                else:
                    continue
        elif mode == 0:
            Logger().info("[mode:0],本次测试执行全部测试用例")
            test_data = self.test_datas
        datas=[]
        datas.append(keys_list)
        datas.append(test_data)
        return datas
    def test_run( self,book_name,test_data,keys_list):
        # 创建表格,建立表头
        self.writedata.creattable(book_name)
        self.header = ["case_num", "explain", "result", "data", "code"]  # 第四个开始设置你需要的值(要和报文字典的key值对应)
        for n in range(len(self.header)):
            self.writedata.write_onlydata(0, n, self.header[n])
        for tdata in test_data:
            global row
            ruselt_path = Project_path.TestResult_path + now + self.__class__.__name__ + ".xls"
            testcase_num = tdata[0]
            explain = tdata[2]
            url = tdata[3]
            type = tdata[4]
            expectation = tdata[5]
            m = 6  # 前面有几个非参数字段这里写几
            data = Change().list_dict(tdata, keys_list, m)
            result = Request(host).request(url, data, type)
            try:
                assert result["code"] == expectation, "与期望值不符"
                test_result = "Pass"
            except Exception as e:
                self.Log.error("第%s条用例[%s]测试失败【%s】" % (testcase_num, explain, e))
                test_result = "Faile"
                raise e
            else:
                self.Log.info("第%s条用例[%s]测试通过" % (testcase_num, explain))
            finally:
                self.writedata.write_onlydata(row, 0, testcase_num)
                self.writedata.write_onlydata(row, 1, explain)
                self.writedata.write_onlydata(row, 2, test_result)
                self.writedata.write_onlydata(row, 3, str(result))
                for h in range(len(self.header)):
                    if self.header[h] in list(result.keys()):
                        self.writedata.write_onlydata(row, h, str(result[self.header[h]]))
                row += 1
                self.writedata.save_excel(ruselt_path)
        row = 1
Example #7
0
def start(case_name, **kwargs):
    log = Logger()
    log.info("{:-^80}".format("start a case test"))
    log.info("case name:" + case_name)
    report_file = os.path.join(cf.get_current_dir(), "Test_Report", "{}.yaml".format(cf.check_ip_yaml()))
    cf.new_cases_result(report_file, case_name)
    time.sleep(0.5)

    platform = subprocess.getoutput("hptc-hwsw-id --hw")
    if "mt" not in platform:
        log.error("dtc can't run this case")
        step1 = {'step_name': 'check current platform',
                 'result': 'Fail',
                 'expect': '',
                 'actual': '',
                 'note': 'current platform is not mtc, skip the case'}
        cf.update_cases_result(report_file, case_name, step1)
        log.info("{:+^70}".format("this case test over"))
        time.sleep(1)
        return False
    cf.SwitchThinProMode(switch_to="user")
    time.sleep(2)
    if not power_manager_factory.PowerManager.open_power_manager_from_tray():
        step1 = {'step_name': 'step1',
                 'result': 'Fail',
                 'expect': 'in user mode, open the power manager from the system tray success',
                 'actual': 'open the power manager from the system tray fail',
                 'note': ''}
        cf.update_cases_result(report_file, case_name, step1)
        log.info("{:+^70}".format("this case test over"))
        time.sleep(1)
        return False
    step1 = {'step_name': 'step1',
             'result': 'Pass',
             'expect': 'in user mode, open the power manager from the system tray success',
             'actual': 'open the power manager from the system tray success',
             'note': ''}
    cf.update_cases_result(report_file, case_name, step1)
    os.system("wmctrl -c 'Control Panel'")
    time.sleep(1)

    cf.SwitchThinProMode(switch_to="admin")
    time.sleep(2)
    if not power_manager_factory.PowerManager.open_power_manager_from_tray():
        step2 = {'step_name': 'step2',
                 'result': 'Fail',
                 'expect': 'in admin mode, open the power manager from the system tray success',
                 'actual': 'open the power manager from the system tray fail',
                 'note': ''}
        cf.update_cases_result(report_file, case_name, step2)
        log.info("{:+^70}".format("this case test over"))
        time.sleep(1)
        return False
    step2 = {'step_name': 'step2',
             'result': 'Pass',
             'expect': 'in admin mode, open the power manager from the system tray success',
             'actual': 'open the power manager from the system tray success',
             'note': ''}
    cf.update_cases_result(report_file, case_name, step2)
    time.sleep(1)
    os.system("wmctrl -c 'Control Panel'")       # close control panel

    log.info("{:+^70}".format("this case test over"))
    time.sleep(1)
    return True
Example #8
0
class ScreenSaver:
    def __init__(self):
        self.log = Logger()

    @staticmethod
    def pic(picture):
        return os.path.join(cf.get_current_dir(), "Test_Data",
                            "td_power_manager", "ScreenSaver",
                            "{}".format(picture))

    @staticmethod
    def lock_screen_by_command():
        os.system("hptc-lockscreen")
        time.sleep(1)

    def lock_screen_by_right_click(self):
        lock_screen_pic = self.pic("_lock_screen")
        try:
            pyautogui.rightClick(1, 1)
            time.sleep(1)
            rs = wait_element(lock_screen_pic)
            if rs:
                pyautogui.move(rs[0])
                time.sleep(0.2)
                pyautogui.click()
            else:
                self.log.error(
                    "not found the 'Lock Screen' in right click menu")
                return False
        except Exception as e:
            print(e)

    @staticmethod
    def lock_screen_by_hotkey():
        pyautogui.hotkey("ctrl", "alt", "l")

    @staticmethod
    def __registry():
        config = os.path.join(cf.get_current_dir(), 'Test_Data', 'td_common',
                              'thinpro_registry.yml')
        with open(config, 'r') as f:
            return yaml.safe_load(f)

    def check_default_set(self):
        registry = self.__registry()
        default = registry["get"]["screensaver"]["default_set"]
        for key, value in default.items():
            k = subprocess.getoutput("mclient --quiet get {}".format(key))
            if k.upper() == str(value).upper():
                self.log.info("'{}' value is '{}'".format(key, value))
            else:
                self.log.error("'{}' value not is '{}'".format(key, value))
                return False

    def set_default_setting(self):
        registry = self.__registry()
        default = registry["set"]["screensaver"]["default_set"]
        for key, value in default.items():
            try:
                os.system("mclient --quiet set {} {}".format(key, value))
                os.system("mclient commit")
            except:
                self.log.error(traceback.format_exc())
                return False

    def __login_from_screen_lock(self, **kwargs):
        admin = os.path.exists('/var/run/hptc-admin')
        require_user_mode = subprocess.getoutput(
            "mclient --quiet get root/screensaver/lockScreenUser")
        require_domain_user = subprocess.getoutput(
            "mclient --quiet get root/screensaver/lockScreenDomain")
        require_admin_mode = subprocess.getoutput(
            "mclient --quiet get root/screensaver/lockScreen")
        require_remote_session = subprocess.getoutput(
            "mclient --quiet get root/screensaver/lockScreenSession")
        if admin:  # admin mode
            if require_admin_mode == '1':
                admin_pw = kwargs.get("admin_password", "1")
                if wait_element(cf.get_current_dir(
                        "Test_Data/td_power_manager/ScreenSaver/_root_lock_screen"
                ),
                                rate=0.98):
                    pyautogui.typewrite(admin_pw)
                    time.sleep(1)
                    pyautogui.press("enter")
                elif wait_element(cf.get_current_dir(
                        "Test_Data/td_power_manager/ScreenSaver/_domain_lock_screen"
                ),
                                  rate=0.98):  # in domain
                    pyautogui.typewrite("root")
                    time.sleep(1)
                    pyautogui.press("tab")
                    time.sleep(1)
                    pyautogui.typewrite(admin_pw)
                    time.sleep(1)
                    pyautogui.press("enter")
            else:
                pass
        else:  # user mode
            if wait_element(cf.get_current_dir(
                    "Test_Data/td_power_manager/ScreenSaver/_root_lock_screen"
            ),
                            rate=0.98):  # not in domain
                if require_user_mode == '1':
                    user_pw = kwargs.get("user_password", "1")
                    pyautogui.typewrite("user")
                    time.sleep(1)
                    pyautogui.press("tab")
                    time.sleep(1)
                    pyautogui.typewrite(user_pw)
                    time.sleep(1)
                    pyautogui.press("enter")
                else:
                    pass
            elif wait_element(cf.get_current_dir(
                    "Test_Data/td_power_manager/ScreenSaver/_domain_lock_screen"
            ),
                              rate=0.98):  # in domain
                if require_user_mode == "1":
                    pyautogui.press("tab", interval=4)
                    pyautogui.typewrite("root")
                    time.sleep(1)
                    pyautogui.press("tab")
                    time.sleep(1)
                    pyautogui.typewrite("1")
                    time.sleep(1)
                    pyautogui.press("enter")
                elif require_domain_user == "1":
                    user_sh_pw = kwargs.get("user_sh_password", "Shanghai2010")
                    pyautogui.typewrite(user_sh_pw)
                    time.sleep(1)
                    pyautogui.press("enter")
                elif require_remote_session == 1:
                    vdi_pw = kwargs.get("vdi_password", "Shanghai2010")
                    pyautogui.typewrite(vdi_pw)
                    time.sleep(1)
                    pyautogui.press("enter")

    def resume_screensaver_by_keyboard(self, **kwargs):
        pyautogui.press("enter")
        time.sleep(1)
        self.__login_from_screen_lock(**kwargs)

    def resume_screensaver_by_mouse(self, **kwargs):
        pyautogui.click()
        time.sleep(1)
        self.__login_from_screen_lock(**kwargs)

    def reboot_by_screen_lock(self):
        pyautogui.press("enter")
        time.sleep(1)
        tool_pic_rs = wait_element(self.pic("_tool"))
        if tool_pic_rs:
            pyautogui.click(tool_pic_rs[0])
        power_rs = wait_element(self.pic("_power"))
        if not power_rs:
            self.log.error("not found power button")
            return False
        pyautogui.click(power_rs[0])
        reboot_rs = wait_element(self.pic("_reboot"))
        if not reboot_rs:
            self.log.error("not found reboot button")
            return False
        pyautogui.click(reboot_rs[0])
        self.log.info("start reboot")

    def power_off_by_screen_lock(self):
        pyautogui.press("enter")
        time.sleep(1)
        tool_pic_rs = wait_element(self.pic("_tool"))
        if tool_pic_rs:
            pyautogui.click(tool_pic_rs[0])
        power_rs = wait_element(self.pic("_power"))
        if not power_rs:
            self.log.error("not found power button")
            return False
        pyautogui.click(power_rs[0])
        reboot_rs = wait_element(self.pic("_power_off"))
        if not reboot_rs:
            self.log.error("not found power_off button")
            return False
        pyautogui.click(reboot_rs[0])
        self.log.info("start power off")

    @staticmethod
    def resume_lock_screen_by_mouse():
        path = cf.get_current_dir(
            "Test_Data/td_power_manager/password_frame/double")
        pyautogui.click()
        time.sleep(1)
        res = wait_element(path)
        if res:
            pyautogui.typewrite("root")
            time.sleep(1)
            pyautogui.press("tab")
            time.sleep(1)
        pyautogui.typewrite("1")
        time.sleep(1)
        pyautogui.press("enter")
        return True
Example #9
0
 def setUpClass(cls):
     Log = Logger()
     Log.info(u"========%s测试开始:========" % __class__.__name__)
     cls.ws = WsSingle(url)
     cls.Log = Log