#api-testing #testing #testing-tools #tool #cli-tool #env-var

app jikken

Jikken 是一个用于自动化 API 测试的 CLI 工具。它使用 JKT 文件(Jikken 测试定义)来执行测试 REST API 的作业。它对 Windows、macOS 和 Linux 提供了一级支持。访问 jikken.io 获取更多信息。

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开发工具

Download history 178/week @ 2024-04-19 125/week @ 2024-04-26 3/week @ 2024-05-03 1/week @ 2024-05-17

每月 725 次下载

MIT 许可证

260KB
6.5K SLoC

GitHub release (latest by date) Crates.io Chocolatey Homebrew Formula

jikken (jk)

Jikken 是一个强大的 REST API 测试工具包,与源代码控制兼容。该项目目前处于早期测试版。

本项目的目标是提供一个 CLI 工具,用于自动化 API 测试。测试以 YAML/JSON 格式定义。设计旨在使常见场景简单易用,但同时也提供丰富的功能集,以支持更复杂的场景。当前的重点是支持冒烟测试和回归测试(数据验证),但计划在未来添加性能测试功能。

变更日志

发布历史可以在 变更日志 中查看。

文档

有关更完整的文档,请访问我们的网站: Jikken.io

安装

jikken 的二进制名称为 jk

我们计划在不同的平台和软件包管理器上提供更广泛的支持,但截至目前,我们为 MacOS、Linux 和 Windows 提供了预构建的二进制文件。您可以从以下位置下载: 版本

如果您使用 macOS HomebrewLinuxbrew,可以通过添加我们的 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