菜单
开源 此页面内容适用于开源版本。

检查

Checks 验证测试中的布尔条件。测试人员通常使用 Checks 来验证系统是否返回了预期内容。例如,一个 Check 可以验证 POST 请求的 response.status == 201,或者验证响应体是否具有特定大小。

Checks 类似于许多测试框架中的 assert,但失败的 Checks 不会导致测试中止或以失败状态结束。相反,k6 会在测试继续运行时跟踪失败 Checks 的比率。

每个 check 都会创建一个 比率指标。要使 check 导致测试中止或失败,可以将其与 阈值 (Threshold) 结合使用。

检查 HTTP 响应码

Checks 非常适用于编写与 HTTP 请求和响应相关的断言。例如,此代码片段确保 HTTP 响应码为 200

JavaScript
import { check } from 'k6';
import http from 'k6/http';

export default function () {
  const res = http.get('http://test.k6.io/');
  check(res, {
    'is status 200': (r) => r.status === 200,
  });
}

检查响应体中的文本

有时,即使是 HTTP 200 响应也可能包含错误消息。在这种情况下,考虑添加一个 check 来验证响应体,如下所示

JavaScript
import { check } from 'k6';
import http from 'k6/http';

export default function () {
  const res = http.get('http://test.k6.io/');
  check(res, {
    'verify homepage text': (r) =>
      r.body.includes('Collection of simple web-pages suitable for load testing'),
  });
}

检查响应体大小

要验证响应体的大小,可以使用如下 check

JavaScript
import { check } from 'k6';
import http from 'k6/http';

export default function () {
  const res = http.get('http://test.k6.io/');
  check(res, {
    'body size is 11,105 bytes': (r) => r.body.length == 11105,
  });
}

查看通过的 Checks 百分比

当脚本包含 Checks 时,摘要报告会显示通过的测试 Checks 数量

bash
$ k6 run script.js

  ...
    ✓ is status 200

  ...
  checks.........................: 100.00% ✓ 1        ✗ 0
  data_received..................: 11 kB   12 kB/s

在此示例中,请注意 “is status 200” check 在被调用时 100% 成功。

添加多个 Checks

您还可以在单个 check() 语句中添加多个 Checks

JavaScript
import { check } from 'k6';
import http from 'k6/http';

export default function () {
  const res = http.get('http://test.k6.io/');
  check(res, {
    'is status 200': (r) => r.status === 200,
    'body size is 11,105 bytes': (r) => r.body.length == 11105,
  });
}

当此测试执行时,输出将如下所示

bash
$ k6 run checks.js

  ...
    ✓ is status 200
    ✓ body size is 11,105 bytes

  ...
  checks.........................: 100.00% ✓ 2        ✗ 0
  data_received..................: 11 kB   20 kB/s

注意

当一个 check 失败时,脚本将继续成功执行,并且不会返回“失败”的退出状态。如果您需要根据 check 的结果使整个测试失败,则必须将 Checks 与阈值 (thresholds) 结合使用。这在特定场景中特别有用,例如将 k6 集成到 CI 流水线中,或在调度性能测试时接收告警。

阅读更多