sigoden / apitest

Apitest is declarative api testing tool with JSON-like DSL.
MIT License
112 stars 10 forks source link

Enhancement: @openapi #3

Open sigoden opened 3 years ago

sigoden commented 3 years ago

很多项目自带OpenApi/Swagger文档。 OpenAPI中包含了接口的路由信息,并定义了接口请求和响应的数据结构。 这些其实可以被测试项目复用的。

是否可以通过@openapi注解复用 OpenApi 中的信息?

{
    // 引入openapi文档
    @openapi("api")
    // 支持多个openapi文档
    @openapi("apiManage")

    // 复用addPet路由信息
    addPet1: { @openapi("api#addPet")
        req: {
            body: {
            }
        },
        res: {
            // 使用JsonSchema校验响应数据
            body: { @openapi("api#Pet") 
            }
        }
    }
}

这是个开放的Issue,邀请大家一起讨论下是否有必要引入这个特性,如何简单自然的引入。

night-breeze888 commented 3 years ago
// 引入openapi文档
@openapi("api")
// 支持多个openapi文档
@openapi("apiManage")

// 复用addPet路由信息
addPet1: { @openapi("api#addPet")
           /* 这一块为optional 
    req: {
        body: {
        }
    },
    res: {
        // 使用JsonSchema校验响应数据
        body: { @openapi("api#Pet") 
        }
    }
        */
}
kiwiflydream commented 2 years ago

感觉 cli 工具可以通过解析 openapi 文件,自动生成一个 mixin 文件,定义好,请求地址,请求参数,返回值可以是@type 弱校验,这个文件不需要手动修改,接口变更重新生成便可,测试的时候依赖这个 mixin 文件,然后写参数及返回值的校验,这样可以把变化的与不变化的分开

chenws1012 commented 1 year ago

这个功能在使用的便利性,就是个大的飞跃,和openapi结合生态更完善了👍