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

Posted

技术标签:

【中文标题】k6 postman - 请求标签未添加到邮递员测试【英文标题】:k6 postman - Request tags not added to postman test 【发布时间】:2021-07-08 11:41:31 【问题描述】:

在我的 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 有这个功能,因为我在任何地方都找不到任何对它的引用。

有没有人知道解决方法,或者强制标签显示在邮递员测试中的方法?

谢谢

【问题讨论】:

【参考方案1】:

据我所知,这里的post 请求只是一个可以访问响应的 js 函数,当它在发出请求后被调用时。

鉴于没有什么可以阻止您像往常一样直接使用内置检查并按照以下方式进行操作

  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");

而不是您当前的tests 定义。

我认为您应该进行这些检查,而是使用相当新的expectedStatuses 调用,它将在http_req* 指标上设置一个标签,表明是否看到了预期状态.

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

【讨论】:

我实施了您建议的更改,效果很好!谢谢你。我无法重现的一个图表是所有状态代码的总和。 IE。有 1000 200s、50 404s、0 500s 等。到目前为止我的查询是这样的:SELECT sum("value") FROM "http_reqs" WHERE $timeFilter GROUP BY "status"

以上是关于k6 postman - 请求标签未添加到邮递员测试的主要内容,如果未能解决你的问题,请参考以下文章

获取请求适用于邮递员,但适用于浏览器

PUT 请求 404 未找到错误邮递员? Node.js 快递

邮递员:cookie 保存在哪里?

邮递员模拟服务不接受预检请求

带有“全局”URL 的邮递员请求

邮递员发布请求无法读取未定义的属性