k6 邮递员 - 请求标签未添加到邮递员测试

问题描述

在我的 postman-to-k6 转换的 k6 脚本中,我有一个请求级别标签,用于 api 请求名称

postman[Request]({
  name: "Create Account",id: "ce390940-d07a-485a-8796-298708c4a720",method: "POST",address: "REDACTED",data: '{
    REDACTED
  }',headers: {
    REDACTED
  },tags: {
    requestUrl: "Create Account"
  },post(response) {        
    tests["status was 2XX"] = response.status.toString().split('')[0] == "2";
    tests["status was 404"] = response.status === 404;
    tests["status was 5XX"] = response.status.toString().split('')[0] == "5";
  }
});

我将数据发送到 InfluxDB,其中 Grafana 虚拟机检索数据以添加到仪表板。

查看我称为“每秒检查次数”的图表时,我可以使用此查询全局查看所有检查:

SELECT sum("value") FROM "checks" WHERE $timeFilter GROUP BY time($__interval),"check" fill(null)

但是,我希望能够查看每个请求的检查,这将使用我的请求级别标记

我使用以下查询执行此操作:

SELECT sum("value") FROM "checks" WHERE ("requestUrl" =~ /^$URL$/) AND $timeFilter GROUP BY time($__interval),"check" fill(null)

但是,此结果没有返回任何数据。

我的结论是 k6 没有在 postman 测试中添加标签


我知道 base-k6 可以使用:https://k6.io/docs/javascript-api/k6/check-val-sets-tags/

然而,我不相信 postman-k6 有这个功能,因为我在任何地方都找不到任何参考。

有谁知道一种解决方法,或者一种强制标签在邮递员测试中显示方法

谢谢

解决方法

据我所知,这里的 printf( "max( %d,%d ) = %d\n",i,j,max( i,j ) ); 请求只是一个可以访问响应的 js 函数,当它在发出请求后被调用时。

鉴于没有什么可以阻止您像往常一样直接使用内置检查并按照

post

而不是当前的 check(null,{ "status was 2XX": response.status.toString().split('')[0] == "2","status was 404": response.status === 404,"status was 5XX": response.status.toString().split('')[0] == "5",},{"requestUrl": "Create Account"}); 定义。

我认为您应该不要进行这些检查,而是使用相当新的 expectedStatuses 调用,该调用将在 tests看到了预期的状态。

您还可以在 grafana 中进行查询,以检查状态是否主要是 5xx 或 400 或其他您需要的,而无需进行多次检查,这会推送更多指标。