2013-10-09 35 views
0

我在具有屬性Foo的SoapUI測試用例中有一個JDBC請求測試步驟,該屬性已被前面的Property Transfer測試步驟賦值 - 例如, 12345斷言JDBC響應包含請求屬性的值

我想用一個包含斷言檢查測試步驟的響應包含Foo的價值(因爲測試步驟的SQL查詢本質上是一個標量SELECT - 例如SELECT TOP 1 FooColumn FROM SomeTable WHERE FooColumn = :Foo),但是這被證明是一個有點棘手。

the SoapUI page on getting started with JDBC test steps工作,我在Contains斷言中嘗試:Foo:這產生了-> Missing token [:Foo] in Response

所以,我想${:Foo}:這個「成功」,但我發現${:Whatever}Whatever不是一個定義的屬性)和${}「成功」了。這看起來不正確。

如何正確地聲明JDBC請求的響應包含Foo的值?

回答

0

事實證明,JDBC Request斷言中的屬性擴展就像典型測試請求中的屬性擴展(即像the SoapUI page on property expansions解釋的那樣)。

:Foo是特定於JDBC請求的SQL查詢中的屬性擴展。在測試步驟的Contains聲明中,應用標準屬性擴展,並且${JDBC Request Name#Foo}工作 - 成功,而不是「成功」。相反,${JDBC Request Name#Whatever}按預期失敗。

我仍然不清楚爲什麼${:Foo},${:Whatever}${}都似乎成功。如果任何人都可以闡明這一點,我很樂意瞭解。

UPDATE:

而改變標準屬性擴張是正確的,單是這種變化仍不足以使產權轉讓測試步驟轉移沒什麼財產Foo的JDBC請求測試步驟之前的情況。

在這種情況下,JDBC Request的Contains聲明產生誤報,因爲Foo的值爲空字符串,而JDBC Request的響應(零行但非空)響應當然包含該字符串。將Contains斷言更改爲<FOOCOLUMN>${JDBC Request Name#Foo}</FOOCOLUMN>解決了此問題。

這讓我意識到${:Foo},${:Whatever}${}都似乎成功的可能原因:它們擴展爲空字符串,這又是JDBC Request的響應所包含的。與此假設一致,<FOOCOLUMN>${:Foo}</FOOCOLUMN>確實失敗,-> Missing token [<FOOCOLUMN></FOOCOLUMN>] in Response複審。

現在我只是想知道爲什麼${:Foo},${:Whatever}${}擴展爲空字符串,我期望他們會產生錯誤。

相關問題