zl程序教程

您现在的位置是:首页 >  Java

当前栏目

测试之路 pytest接口自动化框架扩展-提取字段属性

2023-02-18 16:23:12 时间

哈喽大家好,歪小王又来分享接口自动化脚本了。本期内容就提取字段属性做一个代码分享。废话不多,昊料开始~

开篇

上期内容在区分接口的分支中,用到了两个方法--->join_dict()和create_case_value()。

第一个方法主要对参数进行了第一层的剥离。判断数据类型是对象还是数组。然后做一个拼接。

第二个函数就是提取字段、字段属性。然后调用造数据的函数。

在刚开始写这块的时候,想着用一个方法处理这里。主要就是解析接口,提取字段等属性。

但是在写的时候,字段的类型会存在数组以及对象类型。放在一个函数中处理的话,又是长篇大论的臃肿代码。所以将其分成了两个函数。分别处理。以此来降低代码冗余,提高代码的可读性。

代码

# 拼接字典参数
def join_dict(datas):
    dict_data = {}
    for key, value in datas.items():
        if value["type"] in ["array", "object"]:
            for key_, value_ in value.items():
                if isinstance(value_, dict):
                    data = {f"{key}_{key_}": value_}
                    result = join_dict(data)
                    dict_data.update(result)
                else:
                    print_log("参数异常")
                    raise ValueError(f"错误参数:{key, value},请检查")

        else:
            dict_data.update({key: value})
    return dict_data
  
  
 # 提取字段、字段属性,并填写数据
def create_case_value(data):
    case_title = ["case_name"]
    for key, value in data.items():
        case_title.append(key)

    requided_params_list = required_datas([data])

    length_params_list = length_datas([data])
    type_data_params_list = type_datas([data])
    all_case = requided_params_list
    for len_par in length_params_list:
        all_case.append(len_par)
    for type_par in type_data_params_list:
        all_case.append(type_par)
    return [case_title, *all_case]

这两个函数在编写初期,就想要有这么一个中转站,用来传递字段属性,然后接收造好的数据。返回给用例生成的主函数里面。

结语

往后的内容主要是以源码的以及思路梳理的方法,来分享内容。(有严重的水文章的嫌疑?)

各位看官老爷们,如果有好的思路随时留言讨论。本期内容就到这里了。我们下期见~