SoapUI如何獲取TestStep的狀態

1. 作自動化測試的時候,須要模擬一些界面上的操做場景,有時就會碰到須要根據上一步的測試步驟狀態選擇下一步須要跳轉的步驟,這個時候就須要獲取上個TestStep的運行狀態,我的理解的狀態應該有:html

Successapi

Failed測試

Cancelledui

Disabledspa

因而在SoapUI Groovy Script中注入的三個對象「log」, "context"和「testRunner」中各類嘗試,看是否存在一個屬性,表示TestStep的狀態。htm

2. 試了不少次,終於在testRunner的方法中看到了一個帶有Status的方法「getStatus()」,因而欣喜的想知道這個方法獲取到的是什麼值:對象

log.info testRunner.status接口

log.info testRunner.getStatus()ip

上面這兩條語句都打印了"RUNNING",因而去查了API,發現TestRunner的Status是一個枚舉值:rpc

Enum Constants:

CANCELLED

FAILED

FINISHED

INITIALIZED

PENDING

RUNNING

WARNING

可是這個狀態的值表示的是當前TestRunner的狀態,並非某個TestStep的狀態。

3. 因而查了不少SoapUI API中的其餘類,發現TestStepResult這個接口裏面有一個方法「getStatus()」,專門用來獲取TestStep的運行狀態(TestStepStatus)。

這個TestStepStatus也是枚舉值:

CANCELLED

FAILED

OK

UNKNOWN

4. 實現這個TestStepResult接口的類不少:

AMFTestStepResultJdbcTestStepResultManualTestStepResultPropertyTransfersTestStep.PropertyTransferResultRestRequestStepResultWsdlMessageExchangeTestStepResultWsdlSingleMessageExchangeTestStepResultWsdlTestRequestStepResultWsdlTestStepResultXmlRpcTestStepRequestResult

可是Groovy Script中注入的三個對象"log", "context", "testRunner"都不是實現TestStepResult的類的實例。(包括Script Assertion中注入的「messageExchange」也不是以上這些類的實例)

messageExchange屬於:RestResponseMessageExchange類的實例

testRunner屬於:MockTestRunner類的實例

5. 因而就想着怎樣經過"log", "context", "testRunner" 和"messageExchange"這四個對象來獲取到一個TestStepResult對象呢?

查了它們四個的API之後,發現:

testRunner.runTestStep(TestStep testStep) 和

testRunner.runTestStepByName(String name)

這兩個方法返回的是一個TestStepResult實例。

因此就在Groovy Script裏面調用了以下方法:

log.info testRunner.runTestStepByName("GetHoldingsReturn").getStatus()

等這個"GetHoldingsReturn"方法運行完了之後,狀態欄輸出"OK".

6. 綜上所述:

SoapUI在獲取某個TestStep的運行狀態時有很是大的侷限性

只有在Groovy Script裏面調用testRunner的 "runTestStep" 和 "runTestStepByName" 方法去運行某個TestStep,才能獲取該TestStep的狀態。

相關文章
相關標籤/搜索