#openapi #hurl #swagger #api-testing #testing #json-file

app openapi-to-hurl

一个将openapi规范转换为Hurl文件的工具(https://hurl.dev/)

4个稳定版本

1.2.1 2024年8月11日
1.2.0 2024年7月28日
1.1.0 2024年7月16日
1.0.0 2024年2月23日

命令行工具 中排名 106

Download history 107/week @ 2024-07-14 6/week @ 2024-07-21 127/week @ 2024-07-28 1/week @ 2024-08-04 108/week @ 2024-08-11

每月下载量 250

MIT 许可证 MIT

125KB
3K SLoC

Open API to Hurl

一个将Open API规范转换为Hurl文件(https://hurl.dev/)的工具。

安装

Cargo

cargo install openapi-to-hurl

Brew

brew tap ethancarlsson/openapi-to-hurl
brew install openapi-to-hurl

注意:所有二进制文件都是为MacOS设计的,Linux用户需要使用Cargo进行安装。

使用方法

openapi-to-hurl接受Open API 3规范的路径,生成hurl请求并将它们写入stdout。

# Spec can be a JSON file
% openapi-to-hurl ./openapi.json 
# or a YAML file
% openapi-to-hurl ./openapi.yaml

openapi-to-hurl也可以接受来自stdin的规范

% cat ./openapi.json | openapi-to-hurl
# Or more usefully
% some-tool-generating-specs | openapi-to-hurl

然后可以将stdout传递给hurl

% cat ./openapi.json | openapi-to-hurl | hurl --variable host=https://example.com

注意:“host”默认创建为一个变量。这使得在本地、预发布和生产之间切换主机更加方便,但也意味着“host”需要作为变量传递给hurl。

生成.hurl文件

这个工具的主要动机之一是使使用hurl开始探索新的API变得更加容易。为此,我们将每个hurl请求分离到不同的文件中会更方便。

% openapi-to-hurl test_files/pet_store.json --out-dir test_hurl_files 
INFO Created or updated 4 hurl files in test_hurl_files
% ls test_hurl_files
addPet.hurl            listPets.hurl          petstore.swagger.io_v1 showPetById.hurl       updatePet.hurl

然后您可以通过CLI使用hurl运行这些文件。

% hurl test_hurl_files/*.hurl --variables-file=test_hurl_files/petstore.swagger.io_v1

或者您可以使用插件在NeovimVSCode中探索它

测试生成

测试生成是这个工具的另一个非常明显的用例。

我们可以生成与.hurl文件一起使用的断言,如下所示

% openapi-to-hurl test_files/pet_store.json --validation body
POST {{host}}/pets
{
  "id": 3,
  "inner": {
    "test": "string"
  },
  "name": "string",
  "photo_urls": [
    "https://example.com/img.png",
    "https://example.com/img2.png"
  ],
  "tag": "string"
}

HTTP *
[Asserts]

status < 400
jsonpath "$" isCollection
jsonpath "$.id" isInteger
jsonpath "$.inner" isCollection
jsonpath "$.inner.test" isString
jsonpath "$.name" isString
jsonpath "$.photo_urls" isCollection

运行以下命令将测试整个API的响应。

openapi-to-hurl test_files/pet_store.json --validation body | hurl --variable host=http://petstore.swagger.io/v1

然而,hurl缺少在属性可以具有多种类型的地方创建断言的工具。因此,每当这个工具检测到不是必需的属性、可空的属性或由于其他任何原因可以具有多种类型的属性时,它都会忽略该属性。

这意味着上面的命令可能有助于检测API是否与规范不匹配,但它无法检测API是否与规范匹配。

这意味着这个工具最好用作测试的起点,然后手动编辑。

openapi-to-hurl test_files/pet_store.json --validation body -o output/directory

限制

openapi-to-hurl仅适用于JSON和纯文本内容类型。

更新日志

更新日志可在:https://github.com/ethancarlsson/openapi-to-hurl/blob/master/CHANGELOG.md

文档

在线手册可在以下位置获取:https://ethancarlsson.github.io/openapi-to-hurl/

许可证

MIT许可证(MIT)

依赖关系

约12–26MB
约387K SLoC