Карате-Гатлинг: Запросы с параметром запроса в отчетах не агрегируются

#karate

Вопрос:

Я делаю 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} и запрос на публикацию агрегируются, но запросы на получение с ссылкой сообщаются индивидуально.

Я также пытался использовать nameResolver с getUrlAndPath, но все равно безуспешно.

Я не уверен, что мне здесь чего-то не хватает.

Примечание: Была еще одна проблема, когда я не смог объединить запрос GET с идентификатором, используя следующий протокол, но теперь все в порядке, когда я включаю полный uri.

 "/dm/{id}" -> Nil,
"/dm" -> Nil
 

Комментарии:

1. это слишком много для меня, чтобы пройти через это, следуйте этому процессу, если никто больше не поможет: github.com/intuit/karate/wiki/How-to-Submit-an-Issue

Ответ №1:

Для этого запроса get передайте поддельный заголовок и используйте его для управления решателем имен: https://github.com/intuit/karate/tree/master/karate-gatling#nameresolver

Я бы ожидал /sending/v1/{dm} , что или что — то в этом роде сработает.

Обратите внимание, что теоретически вы можете написать некоторый пользовательский код Scala для анализа URL-адреса и разрешения имен. Если вы считаете, что это должно быть проще, отправьте запрос на функцию или, что еще лучше, добавьте код !

Комментарии:

1. Спасибо! это решение сработало для меня. Но при дальнейшей отладке я смог решить эту проблему, добавив ключевое слово param в файл GET abstract. Первоначально был сформирован полный URL-адрес, сохраненный в переменной и переданный с ключевым словом url.