Использование Retry до и с оценкой пути JSON - PullRequest
1 голос
/ 22 мая 2019

Я пытаюсь создать функцию опроса, используя повтор до синтаксиса. Мой тест использует повтор в двух сценариях.

Первый работает нормально, но второй сценарий повторения всегда терпит неудачу. с сообщением too many retry attempts: 2

Вот как выглядит моя функция

Given path brokerResult.activationPlan
    And header Authorization = oauthToken
    When method get
    Then status 200
    And retry until response.blocks == '#[13]' && karate.jsonPath(response, "$.blocks[?(@.block_status=='ACTIVE')]")== '#[3]'

Выполнить еще один сценарий, чтобы изменить состояние.

 Given path brokerResult.activationPlan
    And header Authorization = oauthToken
    When method get
    Then status 200
    And retry until karate.jsonPath(response, "$.blocks[?(@.block_status=='FINISHED')]") == '#[3]'

Здесь этот сценарий всегда терпит неудачу.

Я на версии каратэ: 0.9.2

Мой вопрос заключается в том, работает ли оценка пути JSON с повторной попыткой, до которой я предполагаю, что да, поскольку мой первый сценарий работает. что мне не хватает, чтобы заставить работать второй сценарий.

1 Ответ

1 голос
/ 22 мая 2019

Нет, маркеры JSON-path или "fuzzy match" НЕ работают для retry until.

Пожалуйста, прочитайте этот ответ для более подробного объяснения: https://stackoverflow.com/a/55823180/143475

Это должно дать вамподсказка для решения вашего дела:

* def isActive = function(x){ var temp = karate.jsonPath(x, "$.blocks[?(@.block_status=='ACTIVE')]"); return temp.length == 3 }
* def response = { blocks: [{ block_status: 'ACTIVE' }, { block_status: 'ACTIVE' }, { block_status: 'ACTIVE' }] }
* def result = isActive(response)
* match result == true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...