コード例 #1
0
 def handle_path(cls, path_str: str) -> str:
     """路径参数处理
     :param path_str: 带提取表达式的字符串 /&$.case_005.data.id&/state/&$.case_005.data.create_time&
     上述内容表示,从响应字典中提取到case_005字典里data字典里id的值,假设是500,后面&$.case_005.data.create_time& 类似,最终提取结果
     return  /511/state/1605711095
     """
     # /&$.case.data.id&/state/&$.case_005.data.create_time&
     return rep_expr(path_str, cls.response_dict)
コード例 #2
0
 def handle_data(cls, variable: str) -> dict:
     """请求数据处理
     :param variable: 请求数据,传入的是可转换字典/json的字符串,其中可以包含变量表达式
     return 处理之后的json/dict类型的字典数据
     """
     if variable != '':
         data = rep_expr(variable, cls.response_dict)
         variable = convert_json(data)
         return variable
コード例 #3
0
 def handle_path(cls, path_str: str) -> str:
     """
     路径参数处理
     :param path_str: 带提取表达式的字符串 /&$.case_005_data.id&/stats/&$.case_005.data.create_time&
     上述内容解析为:从响应字典中提取到case_005字典里datazi字典里的id的值,假设是500,后面&$.case_005.data.create_time& 类似,最终提取结果为:
     :return: /500/state/123456
     """
     # /&$.case_005.data.id&/state/&$.case_005.data.create_time&
     return rep_expr(path_str, cls.response_dict)
コード例 #4
0
 def handle_path(cls, path_str: str, env: str) -> str:
     """路径参数处理
     :param path_str: 带提取表达式的字符串 /&$.case_005.data.id&/state/&$.case_005.data.create_time&
     :param env: 环境名称, 对应的是环境基准地址
     上述内容表示,从响应字典中提取到case_005字典里data字典里id的值,假设是500,后面&$.case_005.data.create_time& 类似,最终提取结果
     return  /511/state/1605711095
     """
     # /&$.case.data.id&/state/&$.case_005.data.create_time&
     url = ReadFile.read_config(f'$.server.{env}') + rep_expr(
         path_str, cls.response_dict)
     allure_step_no(f'请求地址: {url}')
     return url
コード例 #5
0
 def handle_sql(cls, sql: str, db: object):
     """处理sql,并将结果写到响应字典中"""
     if sql not in ['no', '']:
         sql = rep_expr(sql, DataProcess.response_dict)
     else:
         sql = None
     allure_step('运行sql', sql)
     logger.info(sql)
     if sql is not None:
         # 查后置sql
         result = db.fetch_one(sql)
         allure_step('sql执行结果', {"sql_result": result})
         logger.info(f'结果:{result}')
         if result is not None:
             # 将查询结果添加到响应字典里面,作用在,接口响应的内容某个字段 直接和数据库某个字段比对,在预期结果中
             # 使用同样的语法提取即可
             DataProcess.response_dict.update(result)
コード例 #6
0
ファイル: data_process.py プロジェクト: heyeping/apiTest
 def assert_result(cls, response: dict, expect_str: str):
     """ 预期结果实际结果断言方法
     :param response: 实际响应结果
     :param expect_str: 预期响应内容,从excel中读取
     return None
     """
     # 后置sql变量转换
     expect_str = rep_expr(expect_str, DataProcess.response_dict)
     expect_dict = convert_json(expect_str)
     index = 0
     for k, v in expect_dict.items():
         # 获取需要断言的实际结果部分
         actual = extractor(response, k)
         index += 1
         logger.info(
             f'第{index}个断言,实际结果:{actual} | 预期结果:{v} \n断言结果 {actual == v}')
         allure_step(f'第{index}个断言', f'实际结果:{actual} = 预期结果:{v}')
         try:
             assert actual == v
         except AssertionError:
             raise AssertionError(f'断言失败 -|- 实际结果:{actual} || 预期结果: {v}')
コード例 #7
0
    def handle_sql(cls, sql: str, db: DB):
        """
        处理sql,如果sql执行的结果不会空,执行sql的结果和响应结果字典合并
        :param sql: 支持单条或者多条sql,其中多条sql使用 ; 进行分割
            多条sql,在用例中填写方式如下select * from user; select * from goods 每条sql语句之间需要使用 ; 来分割
            单条sql,select * from user 或者 select * from user;
        :param db: 数据库连接对象
        :return:
        """
        sql = rep_expr(sql, DataProcess.response_dict)

        for sql in sql.split(";"):
            sql = sql.strip()
            if sql == '':
                continue
            # 查后置sql
            result = db.execute_sql(sql)
            allure_step(f'执行sql: {sql}', result)
            logger.info(f'执行sql: {sql} \n 结果: {result}')
            if result is not None:
                # 将查询结果添加到响应字典里面,作用在,接口响应的内容某个字段 直接和数据库某个字段比对,在预期结果中
                # 使用同样的语法提取即可
                DataProcess.response_dict.update(result)