我是SoapUI工具的新手。我使用SoapUI版本5.3.0我的應用程序有幾個RESTful API。SoapUI - Load Test -Assertion:使用SoapUI添加斷言到負載測試
{
"app_key":"i8gAVDwcAq40n2kAv6Ox+w==",
"targetDB":"${#TestCase#TARGET_DB}",
"createNew": "true"
}
從WebService的響應如下所示::
<StartDataExtractResult xmlns="http://schemas.datacontract.org/2004/07/AriaTechCore" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<StatusCode>1</StatusCode>
<StatusText>success</StatusText>
<RequestNumber>101</RequestNumber>
</StartDataExtractResult>
我使用Groovy腳本來生成我在如下JSON請求的形式發送多個請求到WebService對於「targetDB」如下的動態域名:
def targetdb = ((context.expand('${#TestCase#TARGET_DB}') ?: 100) as Integer) + 1
log.info "Target db for current request : ${targetdb}"
context.testCase.setPropertyValue('TARGET_DB', targetdb.toString())
我設計我的測試數據以這樣的方式,在請求加入「targetdb」爲「101」的名義將導致建立在日101標籤e迴應。 負載測試執行正常。
現在我想爲每個負載測試響應添加一些斷言,以檢查StatusCode標記是否包含「1」,StatusText標記包含「成功」& RequestNumber標記包含變量「$ {#TestCase# TARGET_DB}「(以請求json發送)。爲了實現這一點我寫了一個腳本聲明如下:
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(messageExchange.responseContent)
holder.namespaces["ns1"] = "http://schemas.datacontract.org/2004/07/AriaTechCore"
def nodeStatusCode = holder.getNodeValue("//ns1:StatusCode")
assert nodeStatusCode != null
if(nodeStatusCode=="1")
{ log.info "Pass" }
else
{ log.info "Fail"}
def nodeStatusText = holder.getNodeValue("//ns1:StatusText")
assert nodeStatusText != null
if(nodeStatusText=="success")
{ log.info "Pass" }
else
{ log.info "Fail"}
def nodeRequestNumber = holder.getNodeValue("//ns1:RequestNumber")
assert nodeRequestNumber != null
if(nodeRequestNumber=="${TARGET_DB}")
{ log.info "Pass" }
else
{ log.info "Fail"}
但我得到一個錯誤:
No such Property: TARGET_DB for class: Script 53
任何人都可以幫我嗎?
不清楚問題是什麼?你有沒有添加提到的斷言,而不是工作?或者你不知道如何添加它們?請澄清。 – Rao
我想爲來自WebService(由負載測試套件生成)的10個請求/響應中的每一個創建斷言以驗證StatusCode是否爲「1」,StatusText是「成功」並且匹配值「101」。我已經爲單個請求/響應添加了斷言。但現在我想爲所有的請求/響應做這件事。 – DebanjanB
那麼,你可以把請求步驟中提到的斷言(在你的情況下是第二個斷言)。運行負載測試時,每次都會運行這些測試,以便以後不必做。 – Rao