簡體   English   中英

SoapUI-使用XMLUnit和Groovy在模擬調度腳本中比較XML

[英]SoapUI - Compare XML in mock dispatch script using XMLUnit & Groovy

在SoapUI 5.2.1中,我試圖在我的Mock Dispatch Groovy腳本中應用斷言,以比較該模擬接收的XML與我期望的xml匹配。 我已經看到了使用XMLUnit實現此目的的參考。 是否有人擁有完整的常規腳本,包括:

  1. 導入所需的庫
  2. 以XMLUnit可以理解的格式訪問xml有效負載
  3. 創建一個預期的XML有效負載,將與請求有效負載進行比較
  4. 大概使用XMLUnit以xml感知的方式比較xml負載
  5. 產生斷言失敗或采取其他措施

這個領域還有其他一些問題,但是對我來說,這些問題都不完整。

謝謝,馬特。

感謝@Nick Grealy,我的工作順利了。 一些注意事項:

  1. 從內聯xml“ expectedRequest”中省略XML聲明,否則將收到“不允許與“ [xX] [mM] [lL]”匹配的處理指令目標”的異常。
  2. 您需要定義2條響應模擬消息:
    • 失敗響應
    • 成功響應

這是SOAP UI v 5.2.1(模擬分發腳本)中的常規代碼

import org.custommonkey.xmlunit.*

XMLUnit.setIgnoreWhitespace(true)
XMLUnit.setIgnoreComments(true)
XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true)
XMLUnit.setNormalizeWhitespace(true)

def expectedRequest = '''
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
    <soap:Body xmlns:m="http://www.example.org/stock">
        <m:GetStockPrice>
                <m:StockName>IBM</m:StockName>
        </m:GetStockPrice>
    </soap:Body>
</soap:Envelope>
'''

def actualRequestReceived = mockRequest.requestContent

def diff  = new Diff(actualRequestReceived, expectedRequest)

diff.compare()

log.info('actualRequestReceived:' + actualRequestReceived)
log.info('expectedRequest:' + expectedRequest)
log.info('identical:' + diff.identical())
log.info('similar:' + diff.similar())

if (!diff.identical) {
    responseToUse = "FailureResponse"
} else {
    responseToUse = "SuccessResponse"
}

return responseToUse

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM