美文网首页
零基础小白(十一) Excel参数化关联之前置Case实战

零基础小白(十一) Excel参数化关联之前置Case实战

作者: 巴鶴 | 来源:发表于2021-02-18 18:45 被阅读0次

零基础小白 接口自动化测试集锦: https://www.jianshu.com/nb/49125734

引言

接口自动化测试过程中很多接口的前置条件是先登录获取到有效的token后返回给后面的接口作为参数调用。Excel维护接口测试用例,专门使用一列命名为“前置条件” 例如查看玩家信息接口,前置条件--登录

代码设计--由简入繁

关联token直接维护到Excel中

requestToken直接维护到Excel中.jpg

运行结果

成功获得accessToken.jpg

如何获取前置条件Case用例

思路分析

  • 1、验证前置条件;
  ##1.验证前置条件
        if pre_exec:
            pass
  • 2、找到执行用例;
  • 3、发送请求、获取前置测试用例返回结果;
  • 4、替换现有传参变量;

步骤1 维护ExcelData.py脚本

  • 新增 获取全部测试用例类
    # 获取全部测试用例
    def get_case_list(self):
        """
        获取全部测试用例
        :return:
        """
        # 方法1: 常用代码写法
        run_list = list()
        for line in self.reader.data():
            run_list.append(line)
        return  run_list

        # 列表推导
        run_list = [line for line in self.reader.data()]
        return run_list
  • 新增 获取前置条件测试用例
    def get_case_pre(self,pre):
        """
        首先从全部测试用例中,获取前置条件的测试用例
        :param pre:
        :return:
        """
        # 首先获取全部测试用例
        run_list = self.get_case_list()
        for line in run_list:
            if pre in dict(line).values():
                return pre
        return None

步骤2 新增test_excel_case.py脚本

        if pre_exec:
            pass
            # 找到前置条件用例
            pre_case = data_init.get_case_pre(pre_exec)
            print("前置用例执行: %s" % pre_case)
Excel维护前置条件数据.jpg
成功获得accessToken.jpg

步骤3 优化test_excel_case.py脚本

思路:发送请求获取前置测试用例、用例结果、数据初始化,get/post,重构代码

  • 第1步:初始化Excel-DataConfig配置项
    # 前置条件运行
    def run_prc(self,pre_case):
        """
        前置条件运行
        :param pre_case:
        :return:
        """
        pass
        # 初始化数据
        url = ConfigYaml().get_conf_url() + pre_case[data_key.url]
        method = pre_case[data_key.method]
        params = pre_case[data_key.params]
        headers = pre_case[data_key.headers]
        cookies = pre_case[data_key.cookies]
  • 第2步:判断headers、cookies是否存在,存在json转义,不存在无需转义
  • 第3步:Base.py新增方法--判断headers、cookies是否存在
def json_parse(data):
    """
    格式化字符,转换json
    :param data:
    :return:
    """
    # 方法1:
    # # 判断headers是否存在,json转义,无需
    # if headers:
    #     header = json.loads(headers)
    # else:
    #     header = headers

    # 方法2: 列表推导
    return json.loads(data) if data else data
  • 第4步:调用Base.py中json_parse方法
    # 前置条件运行
    def run_prc(self,pre_case):
        """
        前置条件运行
        :param pre_case:
        :return:
        """
        pass
        # 初始化数据
        url = ConfigYaml().get_conf_url() + pre_case[data_key.url]
        method = pre_case[data_key.method]
        params = pre_case[data_key.params]
        headers = pre_case[data_key.headers]
        cookies = pre_case[data_key.cookies]
        # 判断headers、cookies是否存在,存在json转义,不存在无需转义
        # 调用Base.py中json_parse方法
        header = Base.json_parse(headers)
        cookie = Base.json_parse(cookies)
        # 发送请求
调用Base.py中json_parse方法.jpg
  • 第5步:test_excel_case.py脚本新增 run_api请求方法
    def run_api(self,url,method,params=None,header=None,cookie=None,):

        """
        发送请求api
        :return:
        """
        # 接口请求
        request = Request()
        # params 转义json
        #验证params 有没有内容
        if len(str(params).strip()) != 0:
            params = json.loads(params)
        #method post/get
        if str(method).lower()=="get":
            #增加headers,cookies
            res = request.get(url,json = params,headers = header,cookies = cookie)
        elif str(method).lower()=="post":
            res = request.post(url, json=params,headers = header,cookies = cookie)
        else:
            log.error("错误请求method: %S"%method)
        # print(res)
        return res
  • 第6步:test_excel_case.py脚本中test_run方法 调用执行前置测试用例
        ##1.验证前置条件
        if pre_exec:
            pass
            # 找到前置条件用例
            pre_case = data_init.get_case_pre(pre_exec)
            print("前置用例执行: %s" % pre_case)
            # 调用run_pre运行方法
            self.run_prc(pre_case)
前置Case运行结果.jpg

相关文章

网友评论

      本文标题:零基础小白(十一) Excel参数化关联之前置Case实战

      本文链接:https://www.haomeiwen.com/subject/iyogxltx.html