Karate-Gattle:报告中带有查询参数的请求未聚合

问题描述 投票:0回答:1

我正在对空手道加特林进行 POC 以重复使用我的测试。我已参考文档并安装了这些版本。首先,像往常一样很棒的工作,非常容易设置和开始。

我正在从 MySimualtion.scala 调用一个功能文件,该文件具有其他三个抽象功能调用,如下所示:

* def tranRef = TransactionReferenceUtils.generateTransactionReferenceStartWith('09') 
* set payloadR /transaction_reference = tranRef

POST API >> /sending/v1/dm
* call read('classpath:../InitiateAbstract.feature')
* match  responseStatus == 200

GET API By Reference >> /sending/v1/dm?ref={ref}
* call read('classpath:../RetrieveByRefAbstract.feature') {ref: #(tranRef)}
* match responseStatus == 200

GET API By Id>> /sending/v1/dm/{id}
* call read('classpath:../RetrieveByIdAbstract.feature') {id: #(pmId)}
* match responseStatus == 200

抽象功能使用 url 关键字来调用 API。

MySimulation.scala 看起来像这样

class MySimulation extends Simulation {

  val protocol = karateProtocol(
    "/sending/v1/dm?ref={ref}" -> Nil,
    "/send/v1/dm/{id}" -> Nil,
    "/sending/v1/dm" -> Nil
  )
  
 protocol.nameResolver = (req, ctx) => req.getUrlAndPath()

  val create = scenario("create").exec(karateFeature("classpath:com/mastercard/send/xb/Testcases/Rem1Shot/Remit1ShotWithFrwdFeesRetrieve.feature"))

  setUp(
    create.inject(rampUsers(2) during (5 seconds)).protocols(protocol)
  )
}

现在的问题是,在报告中,带有 {id} 的 GET 请求和 POST 请求正在聚合,但带有 ref 的 GET 请求是单独报告的。

我也尝试过将 nameResolver 与 getUrlAndPath 一起使用,但仍然没有成功。

我不确定我是否遗漏了任何东西。

注意: 还有另一个问题,我无法使用以下协议聚合带有 id 的 GET 请求,但现在当我包含完整的 uri 时就可以了。

"/dm/{id}" -> Nil,
"/dm" -> Nil
scala karate gatling
1个回答
1
投票

对于该 get 请求,传递一个假标头并使用它来控制 nameResolver:https://github.com/intuit/karate/tree/master/karate-gadling#nameresolver

我希望

/sending/v1/{dm}
或类似的东西能起作用。

请注意,理论上您可以编写一些自定义 Scala 代码来解析 URL 并进行名称解析。如果您觉得这应该变得更容易,请提交功能请求,或者更好的是,贡献代码!

© www.soinside.com 2019 - 2024. All rights reserved.