def Web_driver_class(): driver = webdriver.Chrome() Logger().info("测试开始了!") yield driver driver.close() driver.quit() Logger().info("测试结束了!")
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)
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()
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)
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)))
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
def Web_driver_class(): driver = webdriver.Firefox() Logger().info("测试开始了!") yield driver # driver.close() driver.quit() Logger().info("测试结束了!")
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
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 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)
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)
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)
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)
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))
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("投标成功")
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("退出登录成功")
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)
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)
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()
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
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()
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)
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)
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)
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)
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")
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 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)
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")
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)