Exemplo n.º 1
0
 def _get_attribute(self, name, *loc):
     try:
         attribute = self._find_element(*loc).get_attribute(name)
         log.info("获取到元素属性:%s" % name)
         return attribute
     except:
         log.error("Error:未获取元素到属性:%s" % name)
Exemplo n.º 2
0
 def _get_property(self, name, *loc):
     try:
         property = self._find_element(*loc).get_property(name)
         log.info("获取到元素属性:%s" % name)
         return property
     except:
         log.error("Error:未获取元素到属性:%s" % name)
Exemplo n.º 3
0
 def _open(self):
     """
     打开浏览器获取url地址
     :param url:
     :return:
     """
     self._driver.get(self._url)
     log.info("打开 URL 地址:%s" % self._url)
Exemplo n.º 4
0
 def open(self):
     """
     打开浏览器获取url地址
     :param url:
     :return:
     """
     self.driver.get(self._url)
     self.driver.maximize_window()
     self.driver.implicitly_wait(20)
     log.info("打开 URL 地址:%s" %self._url)
 def check_text(self, text, confirm_text):
     log.info(
         f"{text}:{self.register_h.get_ele_text(text)},{confirm_text}:confirm_text"
     )
     if confirm_text in self.register_h.get_ele_text(text):
         print("获取错误信息成功")
         return True
     else:
         print("获取错误信息失败")
         return False
Exemplo n.º 6
0
 def test_refund(self, caseid, desc, precondition, parameterize, url,
                 method, header, data, shared, check):
     log.info("CaseId: <- {} ->".format(caseid))
     log.info("Desc: {}".format(desc))
     header = cotool().set_header(header)
     params = cotool().set_params(parameterize, data)
     res = httprequest(url, method, header, params)
     if shared:
         cotool.extract_variable(res, shared)
     cotool().assert_res(res, check)
     allure.dynamic.story("CaseID: < {} > - {}".format(caseid, desc))
Exemplo n.º 7
0
 def _excute_script(self, script):
     """
     执行 script 语句
     :param script:
     :return:
     """
     try:
         self._driver.execute_script(script)
         log.info("执行 script 语句: %s" % script)
     except Exception as e:
         print("Error:script语句执行失败, 错误:%s" % e)
         log.error("script语句执行失败, 错误:%s" % e)
Exemplo n.º 8
0
 def deal_data(self, data):
     '''
     封装整体方法
     :param data: 传入的数据
     :return: url, method, header, params, shared, check
     '''
     data = get_data.get_api_data(data)
     desc, parameterize, url, method, header, param, shared, check = data
     log.info('描述信息: %s' % desc)
     header = self.set_header(header)
     params = self.set_params(parameterize, param)
     return url, method, header, params, shared, check
Exemplo n.º 9
0
 def _switch_to(self, *loc):
     """
     切入 frame
     :param loc:
     :return:
     """
     try:
         frame = self._find_element(*loc)
         self._driver.switch_to.frame(frame)
         log.info("切入 frame 成功")
     except:
         log.error("切入 frame 失败")
Exemplo n.º 10
0
    def set_token_to_config(self):

        partner, leader = self.get_platform_token()
        student = self.get_students_token()
        cookie = self.get_jsessionid()
        try:
            rc.set_token('partner', str(partner))
            rc.set_token('leader', str(leader))
            rc.set_token('students', str(student))
            rc.set_token('cookie', str(cookie))
            log.info("凭证获取成功并写入 /common/config.txt 配置文件中")
        except Exception as e:
            log.error("凭证获取失败,请检查!错误: %s" %e)
Exemplo n.º 11
0
 def get_value_by_js(self, *loc):
     """
     通过js获取元素指定的值
     :param loc:
     :return:
     """
     try:
         element = self.driver.find_element(*loc)
         value = self.driver.execute_script("return arguments[0].value", element)
         log.info("通过js获取元素的值:%s" %value)
         return str(value)
     except:
         log.error("Error:通过js未获取的元素的值")
Exemplo n.º 12
0
    def send_email(self):
        self.email_content()

        try:
            self.smtp.connect(self.email_host)
            self.smtp = SMTP_SSL(self.email_host, timeout=5)
            # self.smtp.ehlo_or_helo_if_needed()
            self.smtp.login(self.username, self.password)
            self.smtp.sendmail(self.username, self.recievers,
                               self.msg.as_string().encode())
            log.info("##### 邮件发送成功 !!!!!")
        except SMTPException as e:
            log.error("////// 发送邮件失败,错误:%s" % e)
        finally:
            self.smtp.close()
            self.smtp.quit()
Exemplo n.º 13
0
 def set_token_to_config(self):
     '''
     将凭证数据写入配置文件
     :return: None
     '''
     leader = self.get_platform_token()
     # students = self.get_students_token()
     cookie = self.get_jsessionid()
     try:
         # rc.set_token('partner', str(partner))
         rc.set_token('leader', str(leader))
         # rc.set_token('students', str(students))
         rc.set_token('cookie', str(cookie))
         log.info("凭证获取成功并写入 /common/config.txt 配置文件中")
     except Exception as e:
         log.error("凭证获取失败,请检查!错误: %s" % e)
Exemplo n.º 14
0
 def extract_variable(self, res, shared):
     '''
     提取变量方法
     :param res: 响应内容response
     :param shared: 提取response中的参数名
     :return:
     '''
     if shared is not None:
         for k, v in shared.items():
             if "-" not in v:
                 value = gv.get_jsonpath_value(res, v)
             else:
                 key, num = str(v).split("-")
                 value = gv.get_jsonpath_value(obj=res, key=key, num=int(num))
             GLOBAL_VAR[k] = value
             setattr(const, k, value)
             log.info("提取变量: [ {}: {} ]".format(k, value))
Exemplo n.º 15
0
 def test_mainlink(self, caseid, desc, precondition, parameterize, url,
                   method, header, data, shared, check):
     log.info("CaseId: <- {} ->".format(caseid))
     log.info("Desc: {}".format(desc))
     if str(caseid) == "10022":
         time.sleep(30)
     header = cotool().set_header(header)
     params = cotool().set_params(parameterize, data)
     res = httprequest(url, method, header, params)
     if shared:
         cotool.extract_variable(res, shared)
     if check:
         cotool().assert_res(res, check)
     if str(caseid) == "10017":
         tools.create_qr_code(GLOBAL_VAR["creativityCode"])
         time.sleep(180)
     allure.dynamic.story("CaseID: < {} > - {}".format(caseid, desc))
Exemplo n.º 16
0
 def quick_rqt(self, data, **kwargs):
     '''
     封装整体方法
     :param data: 传入的数据
     :param kwargs: 传入的字典会加入到data中
     :return: res
     '''
     data = get_data.get_api_data(data)
     desc, parameterize, url, method, header, param, shared, check = data
     log.info('描述信息: %s' % desc)
     header = self.set_header(header)
     params = self.set_params(parameterize, param)
     if kwargs:
         params = dict(params, **kwargs)
     res = httprequest(url, method, header, params)
     self.extract_variable(res, shared)
     return res
Exemplo n.º 17
0
 def check_file(self):
     """
     排序后读取最新的报告文件
     :return:
     """
     REPORT_PATH = os.path.join(rc.PROJECT_PATH, "report")
     if not os.path.exists(REPORT_PATH):
         os.mkdir(REPORT_PATH)
     listdir = os.listdir(REPORT_PATH)
     if len(listdir) == 0:
         log.info("报告存放路径为空,请检查文件夹")
         return FileNotFoundError
     else:
         listdir.sort(
             key=lambda x: os.path.getmtime(REPORT_PATH + "\\" + x))
         att_file = os.path.join(REPORT_PATH, listdir[-1])
     return att_file
Exemplo n.º 18
0
 def handle_param(self, data, **kwargs):
     '''
     封装整体方法
     :param data: 传入的数据
     :return: None
     '''
     data = get_data.get_api_data(data)
     desc, parameterize, url, method, header, param, shared, check = data
     log.info('描述信息: %s' % desc)
     header = self.set_header(header)
     params = self.set_params(parameterize, param)
     if kwargs:
         for k, v in kwargs.items():
             params[k] = v
     res = httprequest(url, method, header, params)
     self.extract_variable(res, shared)
     self.assert_res(res, check)
     return res
Exemplo n.º 19
0
 def open_browser(self):
     global driver
     """
     选择浏览器驱动,获取driver
     :return:
     """
     self.browser = rc.get_browser("browser")
     if self.browser == "chrome":
         driver = webdriver.Chrome()
     elif self.browser == "firefox":
         driver = webdriver.Firefox()
     elif self.browser == "safari":
         driver = webdriver.Safari()
     elif self.browser == "opera":
         driver = webdriver.Opera()
     elif self.browser == "ie":
         driver = webdriver.Ie()
     log.info("启动浏览器:%s" % driver.name)
     return driver
Exemplo n.º 20
0
 def extract_variable(self, res, shared):
     '''
     提取变量方法 期望值
     :param res: 响应内容response
     :param shared: 提取response中的参数名
     :return:
     '''
     # 通过判断shared字段是否为空,得出是否需要取值,为空则跳过
     if shared is not None:
         # 如果不为空,则遍历shared字典,进行response取值
         for k, v in shared.items():
             if "-" not in v:
                 value = gv.get_jsonpath_value(res, v)
             else:
                 key, num = str(v).split("-")
                 value = gv.get_jsonpath_value(obj=res, key=key, num=int(num))
             setattr(const, k, value)
             GLOBAL_VAR[k] = value
             log.info("提取变量: [ {}: {} ]".format(k, value))
Exemplo n.º 21
0
 def test_democase(self, caseid, desc, precondition, parameterize, url,
                   method, header, data, shared, check):
     # 打印日志信息
     log.info("CaseId: <- {} ->".format(caseid))
     log.info("Desc: {}".format(desc))
     # 判断是否需要前置运行所需接口
     if precondition:
         print("我需要前置条件")
     # 处理header
     header = cotool().set_header(header)
     # 处理params中的参数
     params = cotool().set_params(parameterize, data)
     res = httprequest(url, method, header, params)
     # 对res进行提取变量处理
     if shared:
         cotool.extract_variable(res, shared)
     # 断言code及msg,后期取断言data中的字段是否存在于res中
     cotool().assert_res(res, check)
     # allure记录信息
     allure.dynamic.story("CaseID: < {} > - {}".format(caseid, desc))
Exemplo n.º 22
0
    def send_email(self):

        self.email_header()
        self.email_content()
        self.email_attachment()

        try:
            # self.smtp.connect(self.email_host)
            self.smtp = SMTP_SSL(self.email_host)
            self.smtp.ehlo_or_helo_if_needed()
            self.smtp.login(self.username, self.password)
            # login的user参数与sendmail的from_addr参数需一致,否则报错501:mail from address must be same as authorization user
            self.smtp.sendmail(self.username, self.msg["To"].split(";"),
                               self.msg.as_string())
            log.info("##### 邮件发送成功 !!!!!")
        except TimeoutError:
            log.error("////// 发送邮件超时,请检查网络连接")
        except Exception as e:
            log.error("////// 发送邮件失败,错误:%s" % e)
        finally:
            # self.smtp.close()
            self.smtp.quit()
Exemplo n.º 23
0
 def main(self):
     suit = self.set_suit()
     REPORT_DIR = os.path.join(rc.PROJECT_PATH, "report")
     date = time.strftime("%Y-%m-%d %H:%M")
     reportname = REPORT_DIR + date + ".html"
     try:
         if suit is not None:
             log.info("********************   TEST START  ********************")
             with open(reportname, "w+", encoding="utf-8") as file:
                 bstrunner = BSTestRunner(stream=file, title=self.title, description=self.description)
                 bstrunner.run(suit)
     except Exception as e:
         log.error("run test 失败,错误:%s" %e)
     finally:
         log.info("********************   TEST END   ********************")
         if self.on_off == "on":
             ce.send_email()
         elif self.on_off == "off":
             log.info("邮件控制器选择:不发送邮件")
Exemplo n.º 24
0
 def assert_list(self, res, check, key):
     '''
     校验列表数据方法
     :param res: response返回的json数据
     :param check: 预期结果
     :param key: 校验的字段,key
     :return:
     '''
     if res['status'] == '0':
         res1 = jsonpath.jsonpath(res, '$..%s' % key)
         act = res1[0]
         exp = check[key]
         if ((len(act) == len(exp)) and
                 (all(i in act for i in exp))):
             log.info('校验类型: [-in], 结果: [Passed], 预期: {}'.format(exp))
         else:
             log.info('校验类型: [-in], 结果: [Failed], 实际: {}'.format(act))
     else:
         log.info('校验类型: [-in], 结果: [Failed], 实际: {}'.format(res))
Exemplo n.º 25
0
    def close_db(self):

        self.db.close()
        print("###### Database closed!")
        log.info("###### 正在关闭数据库连接 /////")
Exemplo n.º 26
0
 def close(self):
     self.sleep(0.5)
     self.driver.close()
     log.info("关闭浏览器驱动")
Exemplo n.º 27
0
 def __init__(self):
     env = rc.get_env().title()
     log.info("************** 当前运行环境: %s *************" % env)
     self.partner, self.leader, self.students, self.cookie = rc.get_account_info(env)
Exemplo n.º 28
0
 def click_baidu(self):
     self.click_action(*self._submit_btn_loc)
     log.info("点击按钮:百度一下")
Exemplo n.º 29
0
 def input_value(self, value="python"):
     self.send_value(value, *self._input_box_loc)
     log.info("定位输入框:输入:%s" % value)
Exemplo n.º 30
0
 def _sleep(secs):
     time.sleep(secs)
     log.info("等待 %s 秒" % secs)