예제 #1
0
def Web_driver_class():
    driver = webdriver.Chrome()
    Logger().info("测试开始了!")
    yield driver
    driver.close()
    driver.quit()
    Logger().info("测试结束了!")
예제 #2
0
 def test_run(self, tdata):
     ruselt_path = Project_path.TestResult_path + now + self.__class__.__name__ + ".xls"
     caseid = int(tdata[0])
     testcase_num = tdata[1]
     explain = tdata[3]
     url = tdata[4]
     type = tdata[5]
     comparison_key = tdata[6]
     if tdata[7] == 0:
         expectation = tdata[8]
     elif tdata[7] == 1:
         expectation = sql.read_data(tdata[8])
     else:
         return "sql类型错误"
     m = 9  #前面有几个非参数字段这里写几
     data = Change().list_dict(tdata, keys_list, m)
     # print(data,host,url)
     result = Request(host).request(url, data, type)
     try:
         assert (str(result[comparison_key]), str(expectation), "与期望值不符")
     except Exception as e:
         Logger().error("第%s条用例[%s]测试失败【%s】" % (testcase_num, explain, e))
         test_result = "Faile"
         raise e
     else:
         test_result = "Pass"
         pass
         Logger().info("第%s条用例[%s]测试通过" % (testcase_num, explain))
     finally:
         uid = 500
         gl._init()
         gl.set_value('uid', uid)
예제 #3
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()
예제 #4
0
    def run(self, host):
        header = ["case_num", "explain", "result", "data",
                  "code"]  #第五个开始设置你需要的值(要和报文字典的key值对应)
        for n in range(len(header)):
            self.writedata.write_onlydata(0, n, header[n])
        for i in range(len(self.test_data)):
            list_data = self.test_data[i]
            testcase_num = self.test_data[i][0]
            expalin = self.test_data[i][2]
            url = self.test_data[i][3]
            type = self.test_data[i][4]
            expectation = self.test_data[i][5]
            m = 6  #前面有几个非参数字段这里写几
            data = Change().list_dict(list_data, self.keys_list, m)
            result = Request(host).request(url, data, type)
            try:
                assert int(result["code"]) == expectation, "结果与期望不一致"
                test_result = "Pass"
            except Exception as e:
                Logger().error("第%s条用例[%s]测试失败【%s】" %
                               (testcase_num, expalin, e))
                test_result = "Falie"
            else:
                Logger().info("第%s条用例[%s]测试通过" % (testcase_num, expalin))

            finally:
                self.writedata.write_onlydata(i + 1, 0, testcase_num)
                self.writedata.write_onlydata(i + 1, 1, expalin)
                self.writedata.write_onlydata(i + 1, 2, test_result)
                self.writedata.write_onlydata(i + 1, 3, str(result))
                for h in range(len(header)):
                    if header[h] in list(result.keys()):
                        self.writedata.write_onlydata(i + 1, h,
                                                      str(result[header[h]]))
        self.writedata.save_excel(ruselt_path)
예제 #5
0
def ys():
    result = {"0": '合格', "1": '不合格'}
    asr = ''
    try:
        WebDriverWait(driver, 3, 0.2).until(
            EC.element_to_be_clickable((By.XPATH, asr_location)))
    except:
        Logger().info("等待超时,重新刷新页面")
        driver.refresh()
        ys()
    else:
        asr = get_asr()
        Logger().info("当前验收语料:【%s】,标记人员执行结果是:【%s】" %
                      (asr.get('asr'), asr.get('classifier')))
    nlu_result = nlu(asr.get('asr')).text
    Logger().info("当前验收语料:【%s】的NLU分类器结果是:%s" %
                  (asr.get('asr'), json.loads(nlu_result)['classifier']))
    result_key = '0'
    try:
        assert json.loads(nlu_result)['classifier'] == asr.get('classifier')
    except:
        result_key = input("【%s】 选择 【%s】  与NLU分类器结果不一致,请人工判断(0:合格,1:不合格):" %
                           (asr.get('asr'), asr.get('classifier')))
    else:
        result_key = '0'
    finally:
        driver.find_element_by_xpath(select_location %
                                     result.get(result_key)).click()
    Logger().info("当前语料:【%s】点击验收【%s】按钮" %
                  (asr.get('asr'), result.get(result_key)))
예제 #6
0
def add_domain_mix(code):
    if not os.path.exists("/root/flag.yml"):
        add_res = add_domain_with_check(code)
        if add_res:
            steps = {
                "add_domain": True,
                "login_domain": False
            }
            update_flag(steps)
            add_auto_reboot()
            reboot()
        else:
            return
    else:
        Logger().info("flag exist")

    count = 60
    while count:
        if os.path.exists("/root/flag.yml"):
            flag = get_flag()
            if flag.get('add_domain'):
                if not flag.get("login_domain"):
                    domain_login()
                    break
                else:
                    Logger().info("already login as domain")
                    break
            else:
                Logger().info("not in domain")
        count = count - 1
예제 #7
0
def Web_driver_class():
    driver = webdriver.Firefox()
    Logger().info("测试开始了!")
    yield driver
    # driver.close()
    driver.quit()
    Logger().info("测试结束了!")
예제 #8
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
예제 #9
0
 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
예제 #10
0
 def test_login_nopassword(self):
     Logger().info("测试用例:异常用例-密码为空")
     Login(self.driver).login( login_account, "")
     try:
         WebDriverWait(self.driver, 10, 0.5).until(EC.visibility_of_element_located((By.XPATH, error_nopassword_location)))
         Logger().info("%s test pass" % sys._getframe().f_code.co_name)
     except Exception as e:
         verificationErrors.append(e)
         self.driver.save_screenshot(Project_path.Image_path+"%s_%s.png"%(sys._getframe().f_code.co_name,self.nowtime))
         Logger().error("%s test fail" % sys._getframe().f_code.co_name)
예제 #11
0
 def sent_mail(self):
     try:
         smtp = smtplib.SMTP_SSL(self.mail_host,
                                 self.mail_post)  # 构建smtp实例化
         # smtp.connect()  # 链接邮箱服务器
         smtp.login(self.senter, self.passwords)  # 登录邮箱
         smtp.sendmail(self.senter, self.receiver,
                       self.msg.as_string())  # 发送邮件
         Logger().info("邮件发送成功!")
     except Exception as e:
         Logger().error(e)
예제 #12
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)
예제 #13
0
 def test_login_wrong_password(self, Web_driver_class):
     Logger().info("测试用例:异常用例-密码错误")
     Login(Web_driver_class).login(login_account, "11111111")
     try:
         assert Web_driver_class.find_element_by_xpath(
             error_wrongpassword_location).is_displayed()
     except Exception as e:
         Web_driver_class.save_screenshot(
             Project_path.Image_path + "%s_%s.png" %
             (sys._getframe().f_code.co_name, self.nowtime))
         raise e
     else:
         Logger().info("%s test pass" % sys._getframe().f_code.co_name)
예제 #14
0
def leave_domain_with_check():
    current_status = check_status()
    print(current_status)
    if current_status is None:
        Logger().info("can not get correct status")
        return
    if current_status == 0:
        return
    if current_status:
        res = leave_domain(current_status, user_name='bamboo.pan', password="******")
        if res:
            Logger().info("leave domain {}".format(current_status))
            return
    else:
        Logger().info("not in domain {}".format(current_status))
예제 #15
0
 def bid_result(self):
     try:
         WebDriverWait(self.driver, 10, 0.2).until(
             EC.visibility_of_element_located(
                 (By.XPATH, bid_successlog_location)))
         self.driver.find_element_by_xpath(
             bid_successlog_location)  #能找到投资成功的坐标就算成功
     except Exception as e:
         nowtime = time.strftime("%Y%m%d%H%M")
         self.driver.save_screenshot(
             Project_path.Image_path + "%s_%s.png" %
             (sys._getframe().f_code.co_name, nowtime))
         Logger(sys._getframe().f_code.co_name).error("投标异常:%s" % e)
     else:
         Logger().info("投标成功")
예제 #16
0
 def test_login_ok(self):
     Logger().info("测试用例:正常登录")
     Login(self.driver).login( login_account, password)
     try:
         self.assertIn(pickname,Home(self.driver).get_account_name())
     except Exception as e:
         verificationErrors.append(e)
         self.driver.save_screenshot(Project_path.Image_path+"%s_%s.png"%(sys._getframe().f_code.co_name,self.nowtime))
         Logger().error("%s test fail:%s" % (sys._getframe().f_code.co_name,e))
         raise e
         # self.driver.execute_script('window.stop()')
     else:
         Logger().info("%s test pass" % sys._getframe().f_code.co_name)
         Home(self.driver).quit_login()
         Logger().info("退出登录成功")
예제 #17
0
 def test_login_ok(self):
     Logger().info("测试用例:正常登录")
     try:
         Login(self.driver).login(url, login_account, password)
         self.assertIn(pickname, Home(self.driver).get_account_name())
         self.driver.close()
     except Exception as e:
         verificationErrors.append(e)
         self.driver.save_screenshot(
             Project_path.Image_path + "%s_%s.png" %
             (sys._getframe().f_code.co_name, self.nowtime))
         Logger().error("%s test fail:%s" %
                        (sys._getframe().f_code.co_name, e))
     else:
         Logger().info("%s test pass" % sys._getframe().f_code.co_name)
예제 #18
0
 def test_login_wrongphone(self):
     Logger().info("测试用例:异常用例-手机号错误")
     try:
         Login(self.driver).login(url, "22222222222", "123456")
         WebDriverWait(self.driver, 10, 0.5).until(
             EC.visibility_of_element_located(
                 (By.XPATH, error_wrongphone_location)))
         self.driver.close()
         Logger().error("%s test pass" % sys._getframe().f_code.co_name)
     except Exception as e:
         verificationErrors.append(e)
         self.driver.save_screenshot(
             Project_path.Image_path + "%s_%s.png" %
             (sys._getframe().f_code.co_name, self.nowtime))
         Logger().info("%s test fail" % sys._getframe().f_code.co_name)
예제 #19
0
 def test_login_ok(self, Web_driver_class):
     Logger().info("测试用例:正常登录")
     Login(Web_driver_class).login(login_account, password)
     try:
         self.assertIn(pickname, Home(Web_driver_class).get_account_name())
     except Exception as e:
         Web_driver_class.save_screenshot(
             Project_path.Image_path + "%s_%s.png" %
             (sys._getframe().f_code.co_name, self.nowtime))
         Logger().error("%s test fail:%s" %
                        (sys._getframe().f_code.co_name, e))
         Web_driver_class.execute_script('window.stop()')
     else:
         Logger().info("%s test pass" % sys._getframe().f_code.co_name)
     finally:
         Home(Web_driver_class).quit_login()
예제 #20
0
 def generate(self, parts):
     if parts:
         part, *args = parts
         part = part.upper()
         if part == "AC":
             self.AC = AC()
         elif part == "BATTERY":
             self.Battery = Battery()
         elif part == "SCREENSAVER":
             self.ScreenSaver = ScreenSaver()
         elif part == "POWERMENU":
             self.PowerMenu = PowerMenu()
         elif part == "MTC":
             self.AC = AC()
             self.Battery = Battery()
             self.ScreenSaver = ScreenSaver()
             self.PowerMenu = PowerMenu()
         elif part == "DTC":
             self.AC = AC()
             self.ScreenSaver = ScreenSaver()
             self.PowerMenu = PowerMenu()
         if part == "LOG":
             self.log = Logger()
         return self.generate(args)
     return
예제 #21
0
def check_status():
    """
    0 >> no setting
    1 >> domain_1
    2 >> domain_2
    :return:
    """
    SwitchThinProMode(switch_to='admin')
    time.sleep(20)
    open_window("active directory")
    ad = get_position('ad.png')
    if not ad:
        Logger().info("find ad fail")
        return
    authenticate = get_position('authenticate.png')
    if authenticate:
        close_window()
        return 0
    authenticate_checked = get_position('authenticate_checked.png')
    if authenticate_checked:
        join_authenticate = get_position('join_authenticate.png')
        if join_authenticate:
            close_window()
            return 1
        join_authenticate_checked = get_position('join_authenticate_checked.png')
        if join_authenticate_checked:
            close_window()
            return 2

    close_window()
예제 #22
0
 def test_login_wrongphone(self):
     Logger().info("测试用例:异常用例-手机号错误")
     Login(self.driver).login("13017659465", "123456")
     try:
         WebDriverWait(self.driver, 5, 0.2).until(
             EC.visibility_of_element_located(
                 (By.XPATH, error_wrongphone_location)))
         self.assertIsNotNone(
             self.driver.find_element_by_xpath(error_wrongphone_location),
             "没有提示手机号错误,fail")
     except Exception as e:
         self.driver.save_screenshot(
             Project_path.Image_path + "%s_%s.png" %
             (sys._getframe().f_code.co_name, self.nowtime))
         raise e
     else:
         Logger().info("%s test pass" % sys._getframe().f_code.co_name)
예제 #23
0
 def test_login_nopassword(self):
     Logger().info("测试用例:异常用例-密码为空")
     Login(self.driver).login(login_account, "")
     try:
         WebDriverWait(self.driver, 5, 0.2).until(
             EC.visibility_of_element_located(
                 (By.XPATH, error_nopassword_location)))
         self.assertIsNotNone(
             self.driver.find_element_by_xpath(error_nopassword_location),
             "没有提示密码为空,fail")
     except Exception as e:
         self.driver.save_screenshot(
             Project_path.Image_path + "%s_%s.png" %
             (sys._getframe().f_code.co_name, self.nowtime))
         raise e
     else:
         Logger().info("%s test pass" % sys._getframe().f_code.co_name)
예제 #24
0
def start(case_name, **kwargs):
    log = Logger()
    report_file = os.path.join(cf.get_current_dir(), "Test_Report",
                               "{}.yaml".format(cf.get_ip()))

    cf.case_steps_run_control(steps_list,
                              __name__,
                              case_name=case_name,
                              log=log,
                              report_file=report_file)
예제 #25
0
def add_domain_with_check(code, user_name='bamboo.pan', password="******", domain_name='sh.dto'):
    """
    0 >> no domain
    1 >> join domain_1
    2 >> join domain_2
    :return:
    """
    current_status = check_status()
    print(current_status)
    if current_status is None:
        Logger().info("can not get correct status")
        return
    if current_status != 0:
        Logger().info("already in domain {}".format(code))
        return
        # res=leave_domain(current_status,user_name,password)
        # if not res:
        #     Logger().info("leave domain fail")
        #     return
    return add_domain(code, user_name, password, domain_name)
예제 #26
0
 def __init__(self, test_data_path, mode):
     data = Read_xls().read_data(test_data_path, 1)  #默认读取第一个表格
     self.keys_list = data[0]
     self.test_data = []
     if mode == 1:
         Logger().info("[mode:1],本次测试执行基本流测试用例")
         for i in range(1, len(data)):
             if data[i][1] == 1:
                 self.test_data.append(data[i])
                 i += 1
             else:
                 continue
     elif mode == 0:
         Logger().info("[mode:0],本次测试执行全部测试用例")
         self.test_data = data[1:]
     now = time.strftime('%Y-%m-%d-%H-%M-%S')
     global ruselt_path
     ruselt_path = Project_path.TestResult_path + now + self.__class__.__name__ + ".xls"
     self.writedata = WriteExcel()
     self.writedata.creattable("result")
예제 #27
0
 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
예제 #28
0
 def add_attach1(self, path):
     file_name = re.split("/", path)[-1]
     content = MIMEApplication(open(path, 'rb').read())
     content.add_header(
         'Content-Disposition',
         'attachment',
         filename=('gbk', '',
                   file_name))  # 注意:此处basename要转换为gbk编码,否则中文会有乱码。
     try:
         self.msg.attach(content)
     except Exception as e:
         Logger().error("附件添加失败:%s" % e)
예제 #29
0
def domain_login(user_name='bamboo.pan', password="******"):
    domain_login_user = get_position('domain_login_user.png')
    if not domain_login_user:
        Logger().info("find domain_login_user fail")
        return
    domain_login_pwd = get_position('domain_login_pwd.png')
    if not domain_login_pwd:
        Logger().info("find domain_login_pwd fail")
        return
    pyautogui.click(domain_login_user[1])
    pyautogui.typewrite(user_name)
    pyautogui.click(domain_login_pwd[1])
    pyautogui.typewrite(password)
    domain_login_button = get_position('domain_login_button.png')
    if not domain_login_button:
        Logger().info("find domain_login_button fail")
        return
    pyautogui.click(domain_login_button[1])
    steps = {
        "add_domain": True,
        "login_domain": True
    }
    update_flag(steps)
    Logger().info("login success")
예제 #30
0
    def creat_mail(self, report_fail, subject):
        self.msg = MIMEMultipart()
        self.msg['From'] = Header(self.senter_name, 'utf-8')
        self.msg['To'] = Header(self.receiver_name, 'utf-8')
        self.msg['Subject'] = Header(subject, 'utf-8')  #添加主题

        content_1 = open(report_fail, 'rb').read()
        try:
            att1 = MIMEText(content_1, 'base64', 'utf-8')  #添加附件
            att1.add_header('Content-Disposition',
                            'attachment',
                            filename=os.path.basename(report_fail))
            self.msg.attach(MIMEText(content_1, 'html', 'utf-8'))  # 添加邮件正文
            self.msg.attach(att1)
        except Exception as e:
            Logger().error(e)