2017-06-15 50 views
1

節點下面是一個例子迴應,解釋我的方案的Groovy在SOAPUI斷言上重複位於由預期的數據

   <ns2:Details xmlns:ns2="http://ww"> 
       <ns2:Code>011</ns2:Code> 
       <ns2:Result>4</ns2:Result> 
       </ns2:Details> 
       <ns2:Details xmlns:ns2="http://ww"> 
       <ns2:Code>018</ns2:Code> 
       <ns2:Result>0</ns2:Result> 
       </ns2:Details> 
       <ns2:Details xmlns:ns2="http://ww"> 
       <ns2:Code>098</ns2:Code> 
       <ns2:Result>2</ns2:Result> 
       </ns2:Details> 

,我很感興趣,這裏的測試中包含ns2:Result的數據。我已經知道在這個節點中我期望的值,但它必須與正確的值ns2:Code相關聯。

例如,爲了使這個測試通過我希望

  • 預計Code 011Result is 4
  • 預計Code 018Result is 0等。

所以我已經知道的數據是代碼和結果,但我需要確保每個代碼都返回正確的結果值。我不需要驗證返回的代碼是什麼,我只需要根據正確的代碼驗證結果數字。

+0

馬特,請檢查解決方案,看看是否能解決。 – Rao

回答

3

創建一個預期結果,如下圖所示,它是Code and Result的組合,以便兩者都可以一起驗證/斷言。

['011': '4', '018': '0', '098': '2'] 

使用腳本斷言對於相同的請求測試步驟。

這裏去腳本:

//assert if there is response 
assert context.response, 'Response is null or empty 
//change below map as needed 
def expected = ['011': '4', '018': '0', '098': '2'] 
def xml = new XmlSlurper().parseText(context.response) 
def actual = xml.'**'.findAll{it.name() == 'Details'}.collectEntries{[(it.Code.text()): it.Result.text()]} 
assert expected == actual 
+0

這太棒了。再次感謝!)。唯一的情況是context.response的斷言似乎使測試失敗。如果我評論那一行,它會按預期工作。 – Matt

+0

@Matt,如果你已經運行了服務,它就會起作用,它失敗了,因爲沒有響應,欣賞你是否也可以調用先前接受的答案。 – Rao

+0

該服務已經運行。沒有probs,但我會仔細看看下線。我認爲這是一個更安全的網絡來捕獲非響應,而不是真正的數據失敗。我現在會趕上你的另一個。再次感謝,這真的對我的旅程有所幫助。 – Matt