菜单
开源 RSS

k6chaijs

注意

此库的源代码可在 grafana/k6-jslib-k6chaijs GitHub 仓库中找到。

k6chaijs 是一个基于 ChaiJS 在 k6 中提供 BDD 断言的库。您可以将 k6chaijs 用作 checkgroup 的替代方案。

使用此库,您可以获得以下特性:

  • BDD 风格的断言,语言更具表现力
  • 可链式断言
  • 更强大的断言函数,例如:deep, nested, ordered 等。
  • 自动断言消息
  • 异常处理,提升测试稳定性

安装

此库托管在 jslib 上,可以直接在您的 k6 脚本中导入。

JavaScript
import { describe, expect } from 'https://jslib.k6.io/k6chaijs/4.5.0.1/index.js';

或者,您也可以使用本地存储的此文件副本。源代码可在 GitHub 上获取。

示例

以下示例测试了一个假设的 HTTP API,该 API 返回一个 JSON 对象数组。复制以下代码,并将其保存为 script.js

JavaScript
import http from 'k6/http';
import { describe, expect } from 'https://jslib.k6.io/k6chaijs/4.3.4.3/index.js';

export default function testSuite() {
  describe('Fetch a list of pizza names', () => {
    const response = http.get('https://quickpizza.grafana.com/api/names');

    expect(response.status, 'response status').to.equal(200);
    expect(response).to.have.validJsonBody();
    expect(response.json('names').length, 'number of names').to.be.above(1);
  });
}

当您使用 k6 run script.js 运行此测试时,测试结束时的输出显示

bash
█ Fetch a list of public crocodiles
  ✓ expected response status to equal 200
  ✓ has valid json body
  ✓ expected number of crocs to be above 4

如果您熟悉 k6,其结果与使用 checkgroup 相同。请注意,expect 可能会添加或扩展断言消息。

API

API描述
config更改 k6chaijs 行为的选项。
describegroup 的一个包装器,它捕获异常以允许测试执行继续进行。它返回一个布尔值来指示其所有 k6chaijs 断言的成功。
expectcheck 的一个包装器,提供 BDD 风格的断言。

插件

可以使用 Chai 插件扩展默认功能。要使用插件或构建带有插件的 Chai 版本,请遵循此示例中的说明。

了解更多