Я довольно новичок в artillery.io и у меня проблема.Я хочу получить значение из ответа JSON и проверить его в предложении «ожидаемо», поэтому я делаю это так:
config: target: 'https://api.duckduckgo.com' plugins: expect: {} phases: - duration: 1 arrivalRate: 1 scenarios: - flow: - get: url: "/?q=cao&format=json" capture: - json: $RelatedTopics[0].FirstURL as: url expect: - statusCode: 200 - equals: - "{{ url }}" - "https://duckduckgo.com/209/Cao_Wei" - log: "url is {{ url }}"
Затем я вызываю артиллерию просто так:
artillery run duck.yml
Тогда я получаю что-то вроде этого:
User variables: target : https://api.duckduckgo.com $environment : undefined $uuid : 0774da00-b6e6-415c-bd28-0ff4bedd07ec not ok equals , https://duckduckgo.com/209/Cao_Wei expected: all values to be equal got: , https://duckduckgo.com/209/Cao_Wei Request params: https://api.duckduckgo.com/?q=cao&format=json ""
Я опустил остальные выходные данные, потому что он слишком большой.Когда он говорит, что «не в порядке, равно», https://duckduckgo.com/209/Cao_Wei" мне кажется, что моя переменная url не определена.
Использование JSONPath для таких кавычек "$ RelatedTopics [0].FirstURL "дает ту же проблему.
Я установил ожидаемый (https://artillery.io/docs/plugin-expectations-assertions/) плагин так:
npm install -g artillery-plugin-expect
Пожалуйста, чего мне здесь не хватает?
Проблема должна исчезнуть, если вы обновитесь до самой последней версии (1.2.1) плагина, более ранние версии имели ошибку в equals сравнениях, связанных с захваченными переменными (ссылка: https://github.com/artilleryio/artillery-plugin-expect/pull/4)
equals