大家好,上期内容介绍完解析json类型数据参数,数据解析部分就结束了。本期就创建用例文件主方法,以及整体的逆向用例生成思路做一个分享。废话不多,昊料开始~

开篇

在参数解析好以后,我们就可以请下一位大佬上场,来帮我们生成用例文件。

这位大佬的职责如下:

调用参数解析方法,获取接口字段的所有属性判断当前接口是否存在,如果是新接口,进行字段参数解析,生成用例,如果是老接口,提示用户该接口已存在对于新接口,首先定义一个用例模板,并定义好用例名称、请求url、请求方式等,值就从解析数据中提取然后将拿到的接口名称、类型、是否必填等字段属性进行解析,并分配给自己的组员,让组员来帮助生成用例最后生成将组员的工作汇总,生成用例文件,以及test.py文件内的用例代码

代码分享

上面简单介绍了一下这个大佬的职责。下面有请这位臃肿富态的大佬登场

# 创建用例文件

def create_case_file(filename):

    # 获取接口字段参数

    apis = get_ms_data(filename)

    # 获取当前已经存在的接口

    case_list = check_case_list("testcase/sp_meeting")

    # 创建test.py用例代码

    create_case_clasee()

    # 遍历参数,并按照模板将参数写入

    for key, value in apis.items():

         # 初始化模板

        caseinfo = CASETEMPLATE

        if value["api_name"] + ".yaml" not in case_list:

            create_case(value["api_name"])

            caseinfo["api_name"] = value.pop("api_name")

            caseinfo["request"]["method"] = value.pop("method")

            caseinfo["request"]["url"] = key

            caseinfo["request"]["base_url"] = GetConfig().read_base_url("base_url_224")

            request_type = value.pop("content_type")

            if caseinfo["request"]["method"].lower() in ["get", "put", "delete"]:

                par_datas = join_dict(value)

                # 调用生成par参数方法

                parameterize = create_case_value(par_datas)

                caseinfo["request"]["params"] = {}

                for i in range(1, len(parameterize[0])):

                    if "_" in parameterize[0][i]:

                        spli_list = parameterize[0][i].split("_")

                        data_key = spli_list[0]

                        data_value = spli_list[1]

                        caseinfo["request"]["params"].update({data_key: {

                            data_value: "$ddt{" + str(parameterize[0][i]) + "}"

                        }})

                    else:

                        caseinfo["request"]["params"].update({

                            parameterize[0][i]: "$ddt{" + str(parameterize[0][i]) + "}"

                        })

                caseinfo["content_type"] = request_type

                caseinfo["parameterize"] = parameterize

            elif caseinfo["request"]["method"].lower() == "post":

                params_type = "json"

                if 'params' in caseinfo["request"]:

                    del caseinfo["request"]["params"]

                if request_type == "application/text":

                    params_type = "params"

                if NODE:

                    caseinfo["request"][params_type] = {"root": {}}

                else:

                    caseinfo["request"][params_type] = {}

                datas = join_dict(value)

                 # 调用生成json参数方法

                parameterize = create_case_value(datas)

                for i in range(1, len(parameterize[0])):

                    if NODE:

                        if "_" in parameterize[0][i]:

                            spli_list = parameterize[0][i].split("_")

                            data_key = spli_list[0]

                            data_value = spli_list[1]

                            caseinfo["request"][params_type]["root"].update({data_key: {

                                data_value: "$ddt{" + str(parameterize[0][i]) + "}"

                            }})

                        else:

                            caseinfo["request"][params_type]["root"].update({

                                parameterize[0][i]: "$ddt{" + str(parameterize[0][i]) + "}"

                            })

                    else:

                        if "_" in parameterize[0][i]:

                            spli_list = parameterize[0][i].split("_")

                            data_key = spli_list[0]

                            data_value = spli_list[1]

                            caseinfo["request"][params_type].update({data_key: {

                                data_value: "$ddt{" + str(parameterize[0][i]) + "}"

                            }})

                        else:

                            caseinfo["request"][params_type].update({

                                parameterize[0][i]: "$ddt{" + str(parameterize[0][i]) + "}"

                            })

                caseinfo["content_type"] = "application/json"

                caseinfo["parameterize"] = parameterize

            # 最后将参数写入yaml文件中

            write_yaml("testcase/sp_meeting/" + caseinfo["api_name"] + ".yaml", [caseinfo])

            return 200

        else:

            print_log("接口已存在")

            return 500

结语

创建用例的这个方法主要是想实现检查接口,调用用例生成、以及生成用例文件。从需求来看,可以分配成三个函数。三个函数在互相引用,后续代码维护、更新时也会方便很多。

本期内容就先到这里。各位大佬我们下期见。

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: