2015-11-19 25 views
1

我使用SoapUI JSONPath Mach功能來斷言JSON響應。依賴於語言,我可以有兩種不同的反應:SoapUI JSON路徑斷言,用於兩個不使用JsonSlurper的字符串

Factura no encontrada en el lote.Invoice not found in open batch.

我知道我能做到這一點使用JsonSlurper:

assert jsonSlurper.header.rspMsg in ["Factura no encontrada en el lote.","Invoice not found in open batch."] 

不過,我正在尋找的是使用這在了SoapUI斷言功能,見截圖: enter image description here

具體來說,我應如何改變底:

"Factura no encontrada en el lote." OR "Invoice not found in open batch." 

感謝

回答

1

不幸的是,這是不可能使用JSONPath match assert(至少與現有版本,也許在未來的...)。因爲在預期的結果中斷言只允許字符串(或擴展表達式將被評估爲字符串),所以不可能像您想要的那樣使用OR運算符設置期望值。

另一種方法可以將OR運算符置於jsonpath表達式中作爲預期結果使用true

例如,對於你的情況,你可以使用類似:

$.header.[?(@.['rspMsg'] == 'Factura no encontrada en el lote.' || ?(@.['rspMsg'] == 'Invoice not found in open batch.']

而在預期的結果使用true

但是已經有另外一個問題了,SOAPUI 5.2.1使用com.jayway.jsonpath版本0.9.1,這個版本不支持||運算符,所以這是行不通的。

因此,最後一次嘗試可能是使用JSONPath Regex match assert,它根據提供的正則表達式計算JSONPath表達式,並期望true或false。使用這種方法,你可以使用:

JSONPath表達:$.header.rspMsg

正則表達式:(Factura no encontrada en el lote\.)|(Invoice not found in open batch\.)

預期結果:true

enter image description here

在這一點上,我認爲更好的方法是使用jsonSlurper來執行斷言。

希望這有助於

+0

感謝這樣一個完整的答案,我想用正則表達式,但無法弄清楚的格局,反正我認爲使用JsonSlurper這裏是更好的方法。 – QB1979

+0

@ QB1979正則表達式是我發現的最適合您的請求者的方法......但當然,您的第一種方法是更好':)'。 – albciff

相關問題