11 个版本 (6 个重大更新)
0.7.2 | 2024 年 4 月 25 日 |
---|---|
0.6.2 | 2024 年 3 月 8 日 |
0.5.0 | 2023 年 4 月 16 日 |
0.4.0 | 2023 年 2 月 6 日 |
0.1.0 | 2022 年 12 月 31 日 |
#135 在 开发工具
每月 725 次下载
260KB
6.5K SLoC
jikken (jk)
Jikken 是一个强大的 REST API 测试工具包,与源代码控制兼容。该项目目前处于早期测试版。
本项目的目标是提供一个 CLI 工具,用于自动化 API 测试。测试以 YAML/JSON 格式定义。设计旨在使常见场景简单易用,但同时也提供丰富的功能集,以支持更复杂的场景。当前的重点是支持冒烟测试和回归测试(数据验证),但计划在未来添加性能测试功能。
变更日志
发布历史可以在 变更日志 中查看。
文档
有关更完整的文档,请访问我们的网站: Jikken.io。
安装
jikken 的二进制名称为 jk
。
我们计划在不同的平台和软件包管理器上提供更广泛的支持,但截至目前,我们为 MacOS、Linux 和 Windows 提供了预构建的二进制文件。您可以从以下位置下载: 版本。
如果您使用 macOS Homebrew 或 Linuxbrew,可以通过添加我们的 tap 并使用 brew 安装。
$ brew tap jikkenio/jikken
$ brew install jikken
如果您是 Rust 开发者,您可以使用 cargo 从 crates.io 安装。
$ cargo install jikken
或直接使用 cargo 的 git 标志从仓库安装。
$ cargo install --git http://www.github.com/jikkenio/jikken
如果您使用 chocolatey,您可以从社区仓库安装。
$ choco install jikken
如果您想从源代码手动安装,cargo 仍然是您的最佳选择。您只需克隆仓库,然后在仓库目录中运行 cargo install。
$ git clone https://github.com/jikkenio/jikken.git
$ cd jikken
$ cargo install
用户指南
一旦安装了jikken,使用工具就像在包含测试的项目文件夹中运行 jk run
命令一样简单。
$ jk run
Jikken found 2 tests.
Running Test (1/2) `Test 1` Iteration(1/1)...PASSED!
Running Test (2/2) `Test 2` Iteration(1/2)...PASSED!
Running Test (2/2) `Test 2` Iteration(2/2)...PASSED!
测试使用测试定义格式定义。惯例是它们以 .jkt
文件保存。Jikken将在当前目录中查找jkt
文件,并通过子目录递归查找所有可找到的测试定义。如果为测试提供名称,则执行时将使用该名称。如果没有提供名称,它将简单地使用名称 Test #
。
以下输出显示了一个示例,其中有两个JKT文件位于描述要执行的测试的位置。第一个测试用于与系统进行身份验证并接收一个身份验证令牌。然后它提取并将该令牌嵌入到后续的测试中。在这种情况下,第二个测试有两个迭代(它运行两次,调用相同的端点,但每次运行时它都会传递不同的变量)。
$ jk run
Jikken found 2 tests.
Running Test (1/2) `Fetch Auth Credentials` Iteration(1/1)...PASSED!
Running Test (2/2) `My API Test` Iteration(1/2)...PASSED!
Running Test (2/2) `My API Test` Iteration(2/2)...PASSED!
如果您正在开发新的测试,或者如果您想在不实际运行的情况下查看将要运行的内容,Jikken支持一个dryrun
命令。这将打印出在正常运行下将发生的步骤的报告。
$ jk dryrun
Jikken found 3 tests.
Dry Run Test (1/3) `Test 1` Iteration(1/1)
request: POST https://api.jikken.io/v1/test_login
request_headers:
-- Content-Type: application/json
request_body: { "username":"testuser", "password":"password" }
validate request_status with defined status: 200
attempt to extract value from response: token = valueOf(auth.token)
Dry Run Test (2/3) `Check Status` Iteration(1/1)
request: GET https://api.jikken.io/v1/test_status
request_headers:
-- Authorization: ${token}
validate request_status with defined status: 200
Dry Run Test (3/3) `Compare StatusV2 and StatusV1` Iteration(1/1)
request: GET https://api.jikken.io/v2/test_status
request_headers:
-- Authorization: ${token}
validate request_status with defined status: 200
prune fields from response_body
filter: user.lastActivity
comparison mode
compare_request: GET https://api.jikken.io/v1/test_status
compare_headers:
-- Authorization: ${token}
validate request_status_code matches compare_request_status_code
prune fields from compare_response_body
filter: user.lastActivity
validate filtered response_body matches filtered compare_response_body
测试还支持具有标签。您可以使用标签和标签组合来精确执行所需的测试。例如,如果您为特定测试标记了“回归”,则可以调用工具仅运行回归测试。
$ jk run -t regression
Jikken found 5 tests.
您还可以提供多个标签来进一步控制要运行的测试。默认情况下,提供多个标签将仅执行包含提供的所有标签的测试。
$ jk run -t foo -t bar
Jikken found 2 tests.
如果您想运行所有具有提供的任何标签的测试,有一个CLI参数使标签成为逻辑或(如果测试包含标签1或标签2或标签3等)。
$ jk run -t foo -t bar --tags-or
Jikken found 8 tests
测试定义格式
有关我们测试定义格式的更多信息,请访问我们的网站:Jikken.io。
配置文件格式
Jikken CLI工具在其执行所在的文件夹中查找一个.jikken
文件。该.jikken
文件使用TOML格式定义。
[settings]
continueOnFailure=true
environment="qa"
apiKey="52adb38c-a0e4-438d-bff3-aa83a1a9a8ba"
[globals]
newUrl="https://127.0.0.1:5001"
oldUrl="https://127.0.0.1:5002"
设置 | 默认值 | 描述 |
---|---|---|
continueOnFailure | false | 默认情况下,在运行jikken时,它将一遇到第一个测试失败就停止执行。continueOnFailure 设置允许您执行所有测试,而不管之前的测试执行情况如何。注意,某些测试失败可能会导致其他测试失败,但对于独立的测试,了解所有测试的通过/失败状态可能很有用。 |
环境 | Jikken提供了多种方式来提供环境标签。此设置在配置文件级别提供标签,并将其应用于所有没有自身关联环境的测试。此值将由提供的环境变量覆盖。 | |
apiKey | apiKey 设置用于向jikken.io webapp提供报告测试运行和状态的密钥。此密钥与您的帐户相关联,并且可以从webapp内部获取。 |
全局变量是一种定义跨所有测试使用的全局变量的方法。这对于像API端点的基础URL、环境变量或身份验证凭证这样的东西很有用。请注意,当前变量(无论是全局的还是JKT文件中本地定义的)是区分大小写的。变量可以是您喜欢的任何大小写,只要它匹配测试文件中变量定义的大小写。
环境变量
Jikken支持将环境变量作为对.jikken
配置文件的覆盖。
环境变量 | 值 | 描述 |
---|---|---|
JIKKEN_CONTINUE_ON_FAILURE | true | 该环境变量将覆盖在 continueOnFailure 配置中定义的设置,该配置位于 .jikken 配置文件中。 |
JIKKEN_ENVIRONMENT | 该环境变量将覆盖在 environment 配置中定义的设置,该配置位于 .jikken 配置文件中。 |
|
JIKKEN_API_KEY | 该环境变量将覆盖在 apiKey 配置中定义的设置,该配置位于 .jikken 配置文件中。 |
Jikken 还支持将全局变量定义为环境变量。这些变量可能会覆盖 .jikken
文件中的值,或者简单地定义文件中不包含的新值。这些定义的格式以 JIKKEN_GLOBAL_
为前缀。例如,以下是在与上述 .jikken
定义相同的方式中定义这些变量的示例:
$ EXPORT JIKKEN_GLOBAL_newUrl=https://127.0.0.1:5001
$ EXPORT JIKKEN_GLOBAL_oldUrl=https://127.0.0.1:5002
$ jk
需要注意的是,目前变量(包括在 JKT 文件中局部定义的全局变量)是区分大小写的。前缀应全部大写 JIKKEN_GLOBAL_
,但之后的内容可以是您喜欢的任何大小写,只要与测试文件中的变量定义大小写匹配即可。
依赖项
~25–43MB
~696K SLoC