Как использовать шаблонизацию в специфической для JSON схеме каратэ - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь ниже в каратэ.

У меня есть схема JSON (для проверки ответа) в файле .json. Существует несколько REGEX, которые распространены во многих схемах. Я хочу извлечь их в один общий файл в виде пар ключ-значение и использовать его в других схемах. Является ли это возможным? если так, как я могу это сделать? Разрешено ли использование шаблонов в схеме json?

Пример:

Пример файла схемы Json (sample-response.json):

{
  "response": {
    "name": "#string",
    "amount": "#regex ^(-?)([0]|[1-9][0-9]{0,15})[.][0-9]{2}$"
  }
}

Файл функций

Feature: Example feature

  Background:

  * def sampleResponse = read('./sample-response.json');



  Scenario: Example scenario

    When url 'https://someurl.com'
    And method get
    Then status 200
    And  match response == sampleResponse

Что бы я хотел сделать?

Я бы хотел сохранить регулярное выражение количества в файле json как переменную многократного использования и использовать шаблонизацию в файле json для его замены. Является ли это возможным?


{
  "response": {
    "name": "#string",
    "amount": "{{get regex from this template}}"
  }
}

1 Ответ

0 голосов
/ 11 июля 2019

Да. Встроенные выражения работают даже при чтении файлов .

Так сделайте это:

{
  "response": {
    "name": "#string",
    "amount": "#(amount)"
  }
}

И затем сделайте это:

Background:
* def amount = 100
* def sampleResponse = read('sample-response.json')

Если вы хотите, чтобы amount был получен из другого файла JSON, почему бы и нет, скажите, что ниже это data.json:

{ "amount": 100 }

Тогда вы сделаете это:

Background:
* def data = read('data.json')
# you don't need the next line if you use "data.amount" as the embedded expression
* def amount = data.amount
* def sampleResponse = read('sample-response.json')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...