Как манипулировать переменной XML-файла в карате DSL? - PullRequest
0 голосов
/ 22 ноября 2018

Существует очень ограниченное число примеров сервисов SOAP с использованием Karate DSL.

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

Давайте разберемся ниже одногомой .xml файл:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.bigldap.ttech.com/">
<soapenv:Header/>
<soapenv:Body>
    <ws:createwMsisdn>
        <name></name>
        <password>1</password>
        <appId>1</appId>
    </ws:createwMsisdn>
</soapenv:Body>

Я хочу преобразовать имя деталь в динамическую переменную.

IЯ пробовал .replace и .set методы каратэ, но это не сработало.

* def user = read ('classpath:xxx/assign-name-password.xml')
* replace user.name = anotheruser.username
* print user

Когда печать работает, он показывает мне только теги, как пустые теги.() Я не смог найти связанный пример.

Любая помощь будет принята с благодарностью.Заранее спасибо.

1 Ответ

0 голосов
/ 22 ноября 2018

Я думаю, что вы пропустили этот набор примеров, он упоминается в документации, но не является частью демонстраций: xml.feature

Я думаю, вам понравится то, что вы найдете,Существует множество опций, в том числе с помощью таблиц, управляемых данными, ниже приведена всего пара:

* def name = 'John Smith'
* def xml =
"""
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.bigldap.ttech.com/">
<soapenv:Header/>
<soapenv:Body>
    <ws:createwMsisdn>
        <name>#(name)</name>
        <password>1</password>
        <appId>1</appId>
    </ws:createwMsisdn>
</soapenv:Body>
</soapenv:Envelope>
"""
* match xml//name == 'John Smith'
* set xml/Envelope/Body/createwMsisdn/name = 'Jane Doe'
* match xml//name == 'Jane Doe'
...