火炮:如何使用火炮负载测试将测试场景标记为失败并在某些报告中显示相同内容?

Artillery: How can I mark a test scenario as failed using artillery load test and show the same in some report?

我正在处理一些测试要求,当 p95>100ms 时我必须使负载测试场景失败。我在下面写了测试片段:

config:
  target: "https://news.google.com"
  # Responses have to be sent within 10 seconds or the request will be aborted
  timeout: 10
  ensure:
      p95: 800
  phases:
    - duration: 10
      arrivalRate: 1

scenarios:
  - name: "Hit news google"
    flow:
    - get:
          url: "/dssw.js_data?_reqid=34556&rt=j"
          expect:
            - statusCode: 300
            - contentType: json

我希望此测试场景在某种报告中可见,因为有多少测试用例已失败并通过。 Artillery 生成的报告仅显示性能统计信息,但如何根据某种报告中的测试性能断言失败显示报告。

一个选项是在 javascript 中实现一个挂钩,它查看状态代码,如果认为状态失败 returns 则通过 next 函数出错。

js 钩子函数示例:

function exitOnFail(requestParams, response, context, ee, next) {
  const statusCode = parseInt(response.statusCode);
  if (statusCode > 399) {
    next(new Error(`${requestParams.url} StatusCode: ${statusCode}`));
  } else {
    next();
  }
}

并将挂钩连接到请求:

config:
 ...
 processor: './scriptfile.js'

 ...

scenarios:
  - flow:
    - get:
        url: some/url
        ...
        afterResponse: 'exitOnFail'