Есть функция POJO в KarateAPI?

Некоторое время я использую Каратэ и RestAssured. Конечно, у обоих инструментов есть свои преимущества и недостатки. Прямо сейчас у меня есть проект RestAssured, в котором есть объект запроса и ответа и объекты POJO. Мои запросы обертывают мою конечную точку и отправляют мои POJO в эту конечную точку. Я делаю все свои заголовки и т. Д. На абстрактном уровне. Если мне нужно отменить их, я отменяю их во время теста. Если нет, то для запуска конечной точки мне нужны две строки кода.

Мой способ работы со счастливым и отрицательным путем edpoint заключается в том, что я инициализирую POJO перед каждым тестом с новыми значениями в конструкторе. Затем я переопределяю значение, которое хочу в области тестирования. Например, если я хочу проверить отрицательный регистр для поля пароля, я устанавливаю это поле на пустую строку во время теста. Но в других полях уже установлены какие-то случайные данные перед тестом.

Но я не знаю, как этого добиться с помощью карате.

Каратэ позволяет мне создать JSON-представление моего тела запроса и определить мои параметры, как показано ниже в примере.

    {
  "firstName": "<name>",
  "lastName": "<lastName>",
  "email": "<email>",
  "role": <role>
  }

Затем в каждом тесте я должен заполнить все поля некоторыми данными.

 |token    |value|
  |name     |'canberk'|
  |lastName |''|
  |email    |'[email protected]'|
  |role     |'1'|

а также

|token    |value|
      |name     |''|
      |lastName |'akduygu'|
      |email    |'[email protected]'|
      |role     |'1'|

Так и продолжается.

Это нормально с телом JSON с 4 полями, но когда тело начинает содержать более 20 полей, становится затруднительно инициализировать каждое поле для каждого теста.

Есть ли у каратэ способ решить эту проблему с помощью заранее определенных шагов, в которых мне нужно найти решение?


person Canberk Akduygu    schedule 17.08.2018    source источник


Ответы (1)


Конечно, у обоих инструментов есть свои преимущества и недостатки.

Я определенно предвзято, но ИМХО единственный недостаток Каратэ по сравнению с REST-гарантированным состоит в том, что вы не получаете безопасности времени компиляции :) Я надеюсь, что вы видели это сравнение.

В карате есть несколько способов делать то, что вы хотите. Вот что бы я сделал.

  1. создайте файл JSON, в котором установлены все значения вашего "счастливого пути"
  2. используйте синтаксис read() для загрузки файла (что означает, что его можно повторно использовать в нескольких тестах)
  3. используйте ключевое слово set, чтобы обновить только поле для вашего сценария или отрицательного теста

Вы можете стать еще интереснее, если будете использовать встроенные выражения.

  1. создайте файл JSON, в котором установлены все ваши значения "счастливого пути", а значения, которые вы хотите изменить, будут выглядеть как foo: '##(foo)'
  2. перед использованием read() вы инициализируете некоторые переменные, например, * def foo = 'bar' и если вы используете null, этот ключ JSON будет даже удален из JSON
  3. read() JSON. готов к использованию!

Вы можете обратиться к этому файлу, который демонстрирует некоторые из этих концепций для XML, и вы можете получить больше идей: _ 8_

person Peter Thomas    schedule 17.08.2018
comment
Как, черт возьми, я пропустил ключевое слово "set" !!! Именно этого я и хочу :) - person Canberk Akduygu; 17.08.2018
comment
Еще один простой вопрос: можно ли использовать мои пользовательские вызовы метода javascript в разделе «Пример» схемы сценария? Или все эти значения должны быть статичными? - person Canberk Akduygu; 17.08.2018
comment
@CanberkAkduygu вы можете придумать творческие способы сочетания Examples и динамического JavaScript: github.com/intuit/karate/blob/master/karate-demo/src/test/java/ - person Peter Thomas; 17.08.2018
comment
Я работаю над этим примером, но вызов моего собственного метода javascript не работает в таблице данных. Может я что-то делаю не так. Мне нужно создавать разные адреса электронной почты для каждого выполнения. Итак, у меня есть метод javascript для создания случайного числа. Мне нужно добавить это значение в свой набор данных электронной почты. Еще раз спасибо за быстрые ответы - person Canberk Akduygu; 17.08.2018
comment
@CanberkAkduygu, тогда посмотрите на ключевое слово table. он работает немного иначе. но я думаю, все, что вам нужно сделать, это переместить метод JS из таблицы примеров над ним как часть шагов. и это может быть set электронное письмо. должно сработать. - person Peter Thomas; 17.08.2018