Rest 仅基于OpenAPI 3.0文件是否可以进行端点单元测试?

Rest 仅基于OpenAPI 3.0文件是否可以进行端点单元测试?,rest,api,testing,build,openapi,Rest,Api,Testing,Build,Openapi,在谷歌搜索之后,我决定直接问这个问题: 是否可以仅基于OpenAPI3.0规范文件运行RESTAPI端点“构建测试” 我想将示例请求-响应对添加到OpenAPI规范文件中,并让现有的或自行编写的库运行所有此类定义的测试并报告任何失败 就我所理解的标准而言,很容易包含请求示例,并以图解的方式(思考)测试响应。但我还没有找到一种方法来结合更具体的测试,比如测试特定响应字段中的数字是否为精确值。另外,有一种顺序测试请求的方法是很好的,但我不希望仅仅从spec文件中实现这一点 最佳解决方案将包含在我的存

在谷歌搜索之后,我决定直接问这个问题:

是否可以仅基于OpenAPI3.0规范文件运行RESTAPI端点“构建测试”

我想将示例请求-响应对添加到OpenAPI规范文件中,并让现有的或自行编写的库运行所有此类定义的测试并报告任何失败

就我所理解的标准而言,很容易包含请求示例,并以图解的方式(思考)测试响应。但我还没有找到一种方法来结合更具体的测试,比如测试特定响应字段中的数字是否为精确值。另外,有一种顺序测试请求的方法是很好的,但我不希望仅仅从spec文件中实现这一点

最佳解决方案将包含在我的存储库中,并在localhost上运行测试。提前非常感谢大家

是否可以仅基于OpenAPI3.0规范文件运行RESTAPI端点“构建测试”

对。规范至少有两个组件允许自动生成测试:

  • 例子。您可以为已定义的端点创建示例,这些端点描述您发送/接收的具体数据样本
  • 模式。它们描述数据模型,可用于生成对API的请求
但我还没有找到一种方法来结合更具体的测试,比如测试特定响应字段中的数字是否为精确值

可以使用“enum”关键字和模式中所需字段的列表中的单个值来完成此操作。与JSON模式相比,OpenAPI不支持“const”关键字

另外,有一种顺序测试请求的方法是很好的,但我不希望仅仅从spec文件中实现这一点

为了实现这一点,您可以使用,它允许您指定如何从对端点a的请求或响应构造对端点B的请求。例如:

路径:
/用户:
职位:
摘要:创建用户并返回用户ID
操作ID:createUser
响应:
'201':
描述:已创建
内容:
应用程序/json:
模式:
类型:对象
特性:
身份证件:
类型:整数
格式:int64
描述:已创建用户的ID。
链接:
GetUserByUserId:
操作ID:getUser
参数:
userId:“$response.body#/id”
/用户/{userId}:
获取:
摘要:按ID获取用户
操作ID:getUser
参数:
-在:路径
名称:userId
必填项:true
模式:
类型:整数
格式:int64
在此示例中,在对
POST/users
的201响应中返回的
id
值可以用作
GET/users/{userId}
中的
userId
参数。通过这种方式,您可以定义到不同端点的请求序列

我想说明两个工具,它们可以仅基于输入开放API规范生成和执行测试用例:

  • 使用这两个源,默认情况下不需要配置。它利用基于属性的测试并验证在测试的模式-响应代码、模式和头中定义的属性。它支持OpenAPI 2和3,并通过OpenAPI链接,可以根据规范文件中的定义自动生成API请求序列
  • 更多地关注示例,并提供了几个示例。它只支持OpenAPI2,第三个版本是
  • 两者都提供了CLI,并且可以使用各种挂钩进行扩展,以适合所需的工作流