2017-08-15 50 views
1

我能夠使用json文件在特性文件中解析我的憑證。 如:空手道API測試 - 使用xml代替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的方式進行任何更改?任何建議,將不勝感激。提前致謝!!

回答

2

嵌入式表達式必須使用'點符號'。好消息是,這可以在XML操作,所以試試這個:

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

在空手道我會建議堅持JSON儘可能除非你是被迫,因爲你是使用XML重新使用外在的東西來您的項目或測試SOAP或XML有效負載。但是如果你真的在做大量的XML處理,請參閱this set of examples的想法。

編輯 - 因爲我錯過了表達式中額外的XML根credentials

+0

我想一起去JSON文件,但產生的黃瓜報告時,它拿起credentials.json文件,並返回以下錯誤: net.masterthought.cucumber.ValidationException:文件「** /工作/# ####/jobs/####/builds/5/cucumber-html-reports/.cache/test-classes/credentials.json'不正確黃瓜報告! – Saurabh

+0

咦!?這絕不應該發生。將報告XML和JSON的輸出文件夾設置爲像「target/surefire-reports」這樣的明智之舉:https://github.com/intuit/karate/tree/master/karate-demo#example-report –

+0

我已經設置了karateOutputPath =「target/surefire-reports」; 另外,通過jenkins我並行運行它: test -Dcucumber.options =「 - plugin junit:target/cucumber-junit.xml --tags〜@ ignore」-Dtest = TestParallel -DargLine = -Dkarate.env = qa – Saurabh