栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python+requests+pytest 接口自动化框架(七)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python+requests+pytest 接口自动化框架(七)

一、接口自动化框架封装之热加载

二、断言封装

1.状态断言:

2.业务断言:

相等的断言

包含断言

大于断言


内容:接口自动化测试框架封装之热加载封装以及断言封装

一、接口自动化框架封装之热加载 热加载:就是在代码执行过程当中动态的调用Python中的方法达到或得动态参数的目的。

 利用反射 调用方法 获取动态参数的值

    # 替换值的方法
    # Qa1(替换url,params,data,jsom,headers)
    # Qa2(string,int,float,list,dict)
    def replace_value(self, data):
        if data:
            # 保存数据类型
            data_type = type(data)
            # 判断数据类型
            if isinstance(data, dict) or isinstance(data, list):
                str_data = json.dumps(data)
            else:
                str_data = str(data)
            # 替换
            for cs in range(1, str_data.count('${') + 1):
                if "${" in str_data and "}" in str_data:
                    start_index = str_data.index("${")
                    end_index = str_data.index("}", start_index)
                    old_value = str_data[start_index:end_index + 1]
                    # 反射:通过字类的对象和方法符串调用方法
                    func_name = old_value[2:old_value.index('(')]
                    args_value1 = old_value[old_value.index('(') + 1:old_value.index(')')]
                    if args_value1 != "":
                        if "," in args_value1:
                            args_value2 = args_value1.split(',')
                            new_value = getattr(self.obj, func_name)(*args_value2)
                            print(new_value)
                        else:
                            print("func_name",func_name)
                            new_value = getattr(self.obj, func_name)(args_value1)
                    else:
                        new_value = getattr(self.obj, func_name)
                    # 数字类型去掉“”
                    if isinstance(new_value, int) or isinstance(new_value, float):
                        str_data = str_data.replace('"' + old_value + '"', str(new_value))
                    else:
                        str_data = str_data.replace(old_value, str(new_value))
            # 还原数据类型
            if isinstance(data, dict) or isinstance(data, list):
                data = json.loads(str_data)
            else:
                data = data_type(str_data)
        return data

二、断言封装

1.状态断言: 断言返回的状态码为200

2.业务断言:

相等的断言
    def equals_assert(self, value, sj_restul, result_code):
        flag = 0
        for assert_key, assert_value in value.items():
            if assert_key == "status_code":
                if assert_value != result_code:
                    flag = flag + 1
            else:
                lists = jsonpath.jsonpath(sj_restul, '$..%s' % assert_key)
                if lists:
                    if assert_value not in lists:
                        flag = flag + 1
                else:
                    flag = flag + 1
        return flag

包含断言
    def contains_assert(self, value, sj_result):
        flag = 0
        if str(value) not in str(sj_result):
            flag = flag + 1
        return flag

大于断言
    def greater_than_assert(self, value, sj_result):
        flag = 0
        (assert_key, assert_value), = value.items()
        sj_value = (jsonpath.jsonpath(sj_result, '$..%s' % assert_key))[0]
        if assert_value >= sj_value:
            flag = flag + 1
        return flag

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/915833.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号