Тесты API каратэ — использование xml вместо json

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

 * def credentials = read('classpath:credentials.json')
 * header Authorization = call read('classpath:basic-auth.js') { username: '#(credentials.user)', password: '#(credentials.pwd)' }

Вот файл учетных данных json:

{
  user: 'abc',
  pwd: 'def'
}

Однако, когда я пытаюсь использовать XML-файл, я не могу его проанализировать:

XML-файл учетных данных:

<?xml version="1.0" encoding="UTF-8" ?>
 <credentials>  
   <user>abc</user>
   <pwd>def</pwd>
 </credentials>

Я изменил файл функции как:

 * def credentials = read('classpath:credentials.xml')
 * header Authorization = call read('classpath:basic-auth.js') { username: '#(<credentials><user></credentials>)', password: '#(<credentials><pwd></credentials>)' }

Нужно ли мне вносить какие-либо изменения в способ разбора xml? Мы ценим любые предложения. Заранее спасибо!!


person Saurabh    schedule 15.08.2017    source источник


Ответы (1)


Встроенные выражения должны использовать «точечную нотацию». Хорошей новостью является то, что это может работать с XML, поэтому попробуйте следующее:

* def creds = read('classpath:credentials.xml')
* header Authorization = call read('classpath:basic-auth.js') { username: '#(creds.credentials.user)', password: '#(creds.credentials.pwd)' }

В Karate я бы посоветовал придерживаться JSON, насколько это возможно, если только вы не вынуждены использовать XML, потому что вы повторно используете что-то внешнее по отношению к вашему проекту или тестируете полезные нагрузки SOAP или XML. Но если вы действительно много работаете с XML, обратитесь к этот набор примеров для идей.

отредактировано - так как я пропустил дополнительный корень XML credentials в выражениях.

person Peter Thomas    schedule 15.08.2017
comment
Я хотел использовать файл json, но при создании отчета о огурцах он берет файл учетных данных.json и возвращает следующую ошибку: net.masterthought.cucumber.ValidationException: File '**/jobs/#####/ Jobs/####/builds/5/cucumber-html-reports/.cache/test-classes/credentials.json' не является правильным отчетом Cucumber! - person Saurabh; 15.08.2017
comment
Хм !? Этого никогда не должно случиться. Установите выходную папку для XML- и JSON-отчета на что-то разумное, например target/surefire-reports: github.com/intuit/karate/tree/master/karate-demo#example-report - person Peter Thomas; 15.08.2017
comment
Я уже установил karateOutputPath = target/surefire-reports; Кроме того, через jenkins я запускаю его параллельно: test -Dcucumber.options=--plugin junit:target/cucumber-junit.xml --tags ~@ignore -Dtest=TestParallel -DargLine=-Dkarate.env=qa - person Saurabh; 15.08.2017
comment
Тогда я понятия не имею. Никто никогда не сообщал о чем-то подобном. Это происходит в вашей локальной среде разработчиков? Вы, должно быть, путаете плагин для отчетов о огурцах в своем Jenkins или что-то в этом роде. Начните с чистого проекта! Или придерживайтесь только отчетов Jenkins JUnit. Пропустите junit огурец.варианты. Всего наилучшего. - person Peter Thomas; 15.08.2017
comment
Выяснилось, что это была проблема с путем в Дженкинсе. Спасибо за вашу помощь. Я могу генерировать отчеты независимо от json или xml. Спасибо @Питер Томас - person Saurabh; 15.08.2017
comment
@Саурабх Отлично! Подумайте о том, чтобы принимать ответы и голосовать за них, это помогает поддерживать качество ответов на Stack Overflow. - person Peter Thomas; 15.08.2017