美文网首页
零基础小白(十一) 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