#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 • Rust 包仓库 178/week @ 2024-04-19 • Rust 包仓库 125/week @ 2024-04-26 • Rust 包仓库 3/week @ 2024-05-03 • Rust 包仓库 1/week @ 2024-05-17 • Rust 包仓库

每月 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