Пример #1
0
 def get_relevance_conf(self):
     relevance = dict()
     logging.debug("读取初始关联文件内容:   %s" % self.host.items())
     for key, value in self.host.items():
         relevance[key] = function_replace(value)
     logging.debug("初始关联内容数据处理后:   %s" % relevance)
     return relevance
Пример #2
0
def get(header, address, data, timeout=8):
    """
    get 请求
    :param header:  请求头
    :param address:  host地址
    :param data: 请求参数
    :param timeout: 超时时间
    :return:
    """
    response = requests.get(url=address,
                            params=data,
                            headers=header,
                            timeout=timeout)
    if response.status_code == 301:
        response = requests.get(url=response.headers["location"])
    try:
        return response.status_code, response.json()
    except json.decoder.JSONDecodeError:
        return response.status_code, ''
    except simplejson.errors.JSONDecodeError:
        return response.status_code, ''
    except Exception as e:
        logging.exception('ERROR')
        logging.error(e)
        raise
Пример #3
0
def put(header,
        address,
        request_parameter_type,
        data=None,
        timeout=8,
        files=None):
    """
    put 请求
    :param header:  请求头
    :param address:  host地址
    :param request_parameter_type: 接口请求参数格式 (form-data, raw, Restful)
    :param data: 请求参数
    :param timeout: 超时时间
    :param files: 文件路径
    :return:
    """
    if request_parameter_type == 'raw':
        data = json.dumps(data)
    response = requests.put(url=address,
                            data=data,
                            headers=header,
                            timeout=timeout,
                            files=files)
    try:
        return response.status_code, response.json()
    except json.decoder.JSONDecodeError:
        return response.status_code, ''
    except simplejson.errors.JSONDecodeError:
        return response.status_code, ''
    except Exception as e:
        logging.exception('ERROR')
        logging.error(e)
        raise
Пример #4
0
 def scroll_text_click(self, text_value):
     self.driver.find_element_by_android_uiautomator(
         'new UiScrollable('
         'new UiSelector().scrollable(true).instance(0))'
         '.scrollIntoView('
         'new UiSelector().text("' + text_value +
         '").instance(0));').click()
     MyLog.info("找到text:{}".format(text_value))
Пример #5
0
 def click_element(self, locator):
     element = self.wait_element_visibility(locator)
     try:
         MyLog.info("点击元素:{}".format(locator))
         element.click()
     except Exception as e:
         MyLog.error("点击元素:{}失败".format(locator))
         self.save_image()
         raise e
Пример #6
0
 def input_text(self, locator, value):
     element = self.wait_element_visibility(locator)
     try:
         MyLog.info("点击:{},输入:{}".format(locator, value))
         element.send_keys(value)
     except Exception as e:
         MyLog.error("输入数据:{}失败".format(value))
         self.save_image()
         raise e
Пример #7
0
 def get_element_text(self, locator):
     element = self.wait_element_visibility(locator)
     try:
         MyLog.info("获取:{}元素文本:{}".format(locator, element.text))
         return element.text
     except Exception as e:
         MyLog.error("获取元素文本:{}失败".format(element.text))
         self.save_image()
         raise e
Пример #8
0
 def wait_element_visibility(self, locator) -> WebElement:
     MyLog.info("等待元素:{}".format(locator))
     try:
         element = WebDriverWait(self.driver, 20).until(
             expected_conditions.presence_of_element_located(locator))
         return element
     except Exception as e:
         MyLog.error("等待元素:{}超时".format(locator))
         self.save_image()
         raise e
Пример #9
0
 def long_click(self, locator):
     action = TouchAction(self.driver)
     element = self.wait_element_visibility(locator)
     try:
         MyLog.info("长按:{}元素".format(locator))
         action.long_press(element).wait(10000).perform()
     except Exception as e:
         MyLog.error("长按元素:{}失败".format(locator))
         self.save_image()
         raise e
Пример #10
0
 def get_toast_msg(self, locator):
     #return (By.XPATH, "//*[@class='android.widget.Toast']")
     #return (By.XPATH, "//*[@text='审核成功']")
     toast_msg = self.wait_element_visibility(locator)
     try:
         MyLog.info("获取toast元素:{},文本:{}".format(locator, toast_msg.text))
         return toast_msg.text
     except Exception as e:
         MyLog.error("获取toast元素文本:{}失败".format(toast_msg.text))
         self.save_image()
         raise e
Пример #11
0
def get_relevance(data, relevance_list, relevance):
    """
    从返回结果中获取关联键的值
    :param data:  返回结果
    :param relevance_list:  关联键列表
    :param relevance: 关联对象
    :return:
    """
    # 关联键是否时list
    if not relevance_list:
        return relevance
    logging.debug("从返回结果中根据关联键%s提取值" % relevance_list)
    if isinstance(relevance_list, list):
        # 遍历关联键
        for j in relevance_list:
            # 从结果中提取关联键的值
            relevance_value = get_value(data, j)
            if relevance_value:
                # 考虑到一个关联键,多个值
                if j in relevance:
                    if isinstance(relevance[j], list):
                        a = relevance[j]
                        a.append(relevance_value)
                        relevance[j] = a
                    else:
                        a = relevance[j]
                        b = list()
                        b.append(a)
                        b.append(relevance_value)
                        relevance[j] = b
                else:
                    relevance[j] = relevance_value
            else:
                return False
    else:
        relevance_value = get_value(data, relevance_list)
        if relevance_value:
            # 考虑到一个关联键,多个值
            if relevance_list in relevance:
                if isinstance(relevance_list, list):
                    a = relevance[relevance_list]
                    a.append(relevance_value)
                    relevance[relevance_list] = a
                else:
                    a = relevance[relevance_list]
                    b = list()
                    b.append(a)
                    b.append(relevance_value)
                    relevance[relevance_list] = a
            else:
                relevance[relevance_list] = relevance_value
    logging.debug("提取后,关联键对象\n%s" % relevance)
    return relevance
Пример #12
0
 def save_image(self):
     try:
         base_dir = os.path.dirname(os.path.dirname(__file__))
         screenshot_dir = os.path.join(base_dir, "image")
         screenshot_img = os.path.join(screenshot_dir,
                                       str(int(time.time())) + ".png")
         self.driver.get_screenshot_as_file(screenshot_img)
         MyLog.info('保存截图至:{}'.format(screenshot_img))
     except NameError as e:
         MyLog.info('保存截图失败:%s' % e)
         self.save_image()
     return screenshot_img
Пример #13
0
    def __init__(self, model):
        global host, port, timeout
        host = None
        try:
            host = localReadConfig.get_http(model)
        except Exception:
            host = localReadConfig.get_http("default_base_url")

        port = None

        try:
            port = localReadConfig.get_port(model)
        except Exception:
            port = localReadConfig.get_port("default_port")
        timeout = None
        try:
            timeout = localReadConfig.get_time_out(model)
        except Exception:
            timeout = localReadConfig.get_time_out("default_timeout")
        self.log = Log.get_log()
        self.logger = self.log.get_logger()
        self.__headers = {}
        self.__params = {}
        self.__data = {}
        self.__url = None
        self.__files = {}
Пример #14
0
    def __init__(self):
        global host, user, password, port, sender, title
        host = localReadConfig.get_Email("mail_host")
        user = localReadConfig.get_Email("mail_user")
        print(user)
        password = localReadConfig.get_Email("mail_pass")
        print(password)
        port = localReadConfig.get_Email("mail_port")
        sender = localReadConfig.get_Email("sender")
        title = localReadConfig.get_Email("subject")
        # content = localReadConfig.get_email("content")

        # get receiver list
        self.value = localReadConfig.get_Email("receiver")
        self.receiver = []
        for n in str(self.value).split("/"):
            print(n)
            self.receiver.append(n)

        # defined email subject
        date = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        self.subject = "接口测试报告" + " " + date

        self.log = MyLog.get_log()
        self.logger = self.log.get_logger()
        self.msg = MIMEMultipart('related')
Пример #15
0
 def setUp(self):
     """
     :return:
     """
     self.log = Log.get_log()  # 实例化日志
     self.logger = self.log.get_logger()
     print(self.case_name + "测试开始前准备")
Пример #16
0
 def __init__(self):
     global log, logger, resultPath
     log = Log.get_log()
     logger = log.get_logger()
     resultPath = log.get_report_path()
     self.caseListFile = os.path.join(readConfig.proDir, "caselist.txt")
     self.caseFile = os.path.join(readConfig.proDir, "caseCase")
     self.caseList = []
Пример #17
0
    def setUp(self):
        '''

        :return:
        '''
        self.log = MyLog.get_log()
        self.logger = self.log.get_logger()
        print(self.case_name + '-测试开始前准备')
 def __init__(self):
     global base_url, timeout
     base_url = configs.get_url("Base_Url")
     timeout = configs.get_url("Time_Out")
     self.log = Log.get_log()
     self.logger = self.log.get_logger()
     self.params = {}
     self.headers = {}
     self.data = {}
Пример #19
0
 def __init__(self):
     global host, port, username, password, database
     host = localReadConfig.get_db("host")
     port = localReadConfig.get_db("port")
     username = localReadConfig.get_db("username")
     password = localReadConfig.get_db("password")
     database = localReadConfig.get_db("database")
     # init log class
     self.getLog = MyLog.getLog()
     self.log = self.getLog.logger
Пример #20
0
 def __init__(self):
     global log, logger, resultPath, on_off
     log = Log.get_log()
     logger = log.get_logger()
     resultPath = log.get_report_path()
     on_off = localReadConfig.get_Email("on_off")
     self.caseListFile = os.path.join(readConfig.proDir, "caselist.txt")
     self.caseFile = os.path.join(readConfig.proDir, "testcase/dccj")
     # self.caseFile = None
     self.caseList = []
     self.email = MyEmail.get_email()
Пример #21
0
 def __init__(self):
     global localhost, db_user, db_password, test_db
     localhost = Config().get('db')['localhost']
     db_user = Config().get('db')['db_user']
     db_password = Config().get('db')['db_password']
     test_db = Config().get('db')['test_db']
     self.localhost = localhost
     self.db_user = db_user
     self.db_password = db_password
     self.test_db = test_db
     self.log = Log.get_log()
     self.logger = self.log.get_logger()
Пример #22
0
 def __init__(self):
     global host, port, timeout
     host = localReadConfig.get_http("baseurl")
     port = localReadConfig.get_http("port")
     timeout = localReadConfig.get_http("timeout")
     self.log = Log.get_log()
     self.logger = self.log.get_logger()
     self.headers = {}
     self.params = {}
     self.data = {}
     self.url = None
     self.files = {}
Пример #23
0
def save_cookie(header, address, timeout=8, data=None, files=None):
    """
    保存cookie信息
    :param header: 请求头
    :param address: 请求地址
    :param timeout: 超时时间
    :param data: 请求参数
    :param files: 文件路径
    :return:
    """
    cookie_path = setupMain.PATH + '/aff/data/cookie.txt'
    response = requests.post(url=address, data=data, headers=header, timeout=timeout, files=files)
    try:
        cookie = response.cookies.get_dict()
        for i in cookie:
            values = cookie[i]
            with open(cookie_path, 'w+', encoding='utf-8')as f:
                f.write(i+"="+values)
            logging.debug("cookies已保存,结果为:%s" % (i+"="+values))
    except json.decoder.JSONDecodeError:
        return response.status_code, ''
    except simplejson.errors.JSONDecodeError:
        return response.status_code, ''
    except Exception as e:
        logging.exception('ERROR')
        logging.error(e)
        raise
Пример #24
0
def post(header, address, request_parameter_type, timeout=8, data=None, files=None):
    """
    post请求
    :param header: 请求头
    :param address: 请求地址
    :param request_parameter_type: 请求参数格式(form_data,raw)
    :param timeout: 超时时间
    :param data: 请求参数
    :param files: 文件路径
    :return:
    """
    if 'form_data' in request_parameter_type:
        for i in files:
            value = files[i]
            if '/' in value:
                file_parm = i
                files[file_parm] = (os.path.basename(value), open(value, 'rb'))
        enc = MultipartEncoder(
            fields=files,
            boundary='--------------' + str(random.randint(1e28, 1e29 - 1))
        )
        header['Content-Type'] = enc.content_type

        response = requests.post(url=address, data=enc, headers=header, timeout=timeout)
    else:
        response = requests.post(url=address, data=data, headers=header, timeout=timeout, files=files)
    try:
        if response.status_code != 200:
            return response.status_code, response.text
        else:
            return response.status_code, response.json()
    except json.decoder.JSONDecodeError:
        return response.status_code, ''
    except simplejson.errors.JSONDecodeError:
        return response.status_code, ''
    except Exception as e:
        logging.exception('ERROR')
        logging.error(e)
        raise
Пример #25
0
 def __init__(self):
     global scheme, host, port, timeout
     scheme = Config().get('scheme')
     host = Config().get('host')
     port = Config().get('port')
     timeout = Config().get('timeout')
     self.log = Log.get_log()
     self.logger = self.log.get_logger()
     self.headers = {}
     self.params = {}
     self.data = {}
     self.url = None
     self.files = {}
     self.state = 0
Пример #26
0
    def setUp(self):
        self.httprequest = configHttps.ConfigHttps()
        self.token = selfArgs.get_userDefindArgs("X-XSRF-TOKEN")
        self.js = selfArgs.get_userDefindArgs("JsessionId")

        self.headers = {
            "appDeviceType": "IOS",
            "language": "en_UK",
            "Content-Type": "application/json; charset=utf-8",
            "XSRF-TOKEN": self.token,
            'Cookie': "JSESSIONID=" + self.js
        }
        self.getLog = MyLog.getLog()
        self.testlog = self.getLog.logger
Пример #27
0
def ini_request(case_dict, relevance, _path, result):
    """
    用例前提条件执行,提取关联键
    :param case_dict: 用例对象
    :param relevance:  关联对象
    :param _path:  case路径
    :param result:  全局结果
    :return:
    """
    if isinstance(case_dict["premise"], list):
        logging.info("执行测试用例前置接口")
        with allure.step("接口关联请求"):
            for i in case_dict["premise"]:
                relevance_list = relevance.copy()
                for j in range(0, 3):
                    # 获取前置接口关联数据失败
                    code, data = send_request(
                        i, case_dict["testinfo"].get("host"),
                        case_dict["testinfo"].get("address"), relevance_list,
                        _path, result)
                    if not data:
                        with allure.step("接口请求失败!等待三秒后重试!"):
                            pass
                        logging.info("接口请求失败!等待三秒后重试!")
                        continue
                    if i["relevance"]:
                        if len(i["relevance"]):
                            relevance = get_relevance(data, i["relevance"],
                                                      relevance)
                            if isinstance(relevance, bool):
                                with allure.step("从结果中提取关联键的值失败!等待3秒后重试!"):
                                    pass
                                logging.info("从结果中提取关联键的值失败!等待3秒后重试!")
                                time.sleep(3)
                                continue
                            else:
                                break
                        else:
                            break
                    else:
                        break
                if isinstance(relevance, bool):
                    logging.info("从结果中提取关联键的值失败!重试三次失败")
                    result["result"] = False
                    raise failureException("获取前置接口关联数据失败")
    return relevance
Пример #28
0
 def __init__(self):
     global scheme, host, port, timeout, host_au
     scheme = localReadConfig.get_http("scheme")
     host = localReadConfig.get_http("baseurl")
     port = localReadConfig.get_http("port")
     timeout = localReadConfig.get_http("timeout")
     host_au = localReadConfig.get_http("Authorization_url")
     self.log = Log.get_log()
     self.logger = self.log.get_logger()
     self.headers = {}
     self.params = {}
     self.data = {}
     self.url = None
     self.files = {}
     self.state = 0
Пример #29
0
    def __init__(self):
        global host, username, password, port, database, config
        host = localReadConfig.get_db("host")
        username = localReadConfig.get_db("username")
        password = localReadConfig.get_db("password")
        port = localReadConfig.get_db("port")
        database = localReadConfig.get_db("database")
        config = {
            'host': str(host),
            'user': username,
            'passwd': password,
            'port': int(port),
            'db': database
        }

        self.log = Log.get_log()
        self.logger = self.log.get_logger()
        self.db = None
        self.cursor = None
Пример #30
0
    def __init__(self):
        '''初始化邮件属性'''

        self.Rc = RC.ReadConfig()
        self.server = self.Rc.getMail('Smtp_Server')
        self.sender = self.Rc.getMail('Smtp_Sender')
        self.password = self.Rc.getMail('Password')
        self.LReceiver = self.Rc.getMail('OnLine_Receiver')
        self.PReceiver = self.Rc.getMail('Pre_Receiver')
        self.TReceiver = self.Rc.getMail('Test_Receiver')
        self.Msg_Title = self.Rc.getMail('Msg_Title')
        self.Content_Type = self.Rc.getMail('Content_Type')
        self.Content_Disposition = self.Rc.getMail('Content_Disposition')
        self.resultPath = self.Rc.getMail('resultPath')

        # 实例化MyLog
        self.log = MyLog.getLog('SendEmail')
        self.logger = self.log.logger
        # 实例化msg
        self.msg = MIMEMultipart()