2017-10-17 103 views
1

我有一個testCase執行的奇怪問題。正確的測試案例執行給出'失敗'狀態

我有一個測試用例結構如下:

Setup script: 

    set session_id = 0 

    set session_index = 0 

    store custom properties in an external file 

和測試用例體

Test Case: 

    data source 

    SOAP - authentication on components (gives session_id for each component) 

    groovy - recover useful data (store session_id in custom prop session_id_<session_index>) 

    source loop 

    SOAP - start asynchronous service on component 1 

    SOAP - check status on component 1 

    goto 'check status' while status = Pending 

    SOAP - check status on component 2 

    goto 'disconnect terminals' is session_id = 0 

    SOAP disconnect 

    groovy disconnect terminal : loop for each session_index: set session_id = session_id_<session_index> and use it in the SOAP disconnect step (I use run test step) 

TearDown中腳本:恢復自定義屬性

所有這些步驟執行成功,我沒有記錄任何錯誤,但整體測試狀態爲FAILED。

我意識到問題來自goto步驟: 我正在循環回SOAP請求以檢查狀態,而返回的狀態設置爲「掛起」。所以每次請求返回「掛起」時,它都會失敗,我再次發送檢查請求。 當狀態終於'成功'時,testStep變爲綠色(OK)並且testCase繼續。

在總體結果中,多次播放的testStep會針對每次「迭代」存儲一次,結果只有最後一次出現纔可以,因此總體測試狀態爲FAILED。

回答

1

沒有針對此問題的變通方法:

我檢查了測試結果,並檢查了一些地方視爲失敗testRunner.results我的測試步驟。要做到這一點,我把下面的代碼位在我的拆解腳本標籤

for (testStep in testRunner.getResults()){ 
    log.info "status " + testStep.getTestStep().getName() + " : " + testStep.getStatus() 
} 

這些步驟的那些上我是循環,等待「待定」不同的狀態。 在測試結束時,由於狀態最終「成功」,因此即使testStep發生了多次「失敗」(這是令人困惑的),該步驟在testCase中設置爲OK(綠色標記)。

所以我發現我可以更新這些狀態做了有關步驟如下:

for (results in testRunner.results){ 
// implement a selection condition 
    results.status = "OK" 
} 

我必須確保我將此只是對有關testSteps。

但在年底的整體狀態還是失敗了,仍然在我的拆機腳本:

log.info "TEST RUNNER STATUS after update" + testRunner.getStatus() 

如果我敢肯定,我的步驟和結果,我可以按如下覆蓋它:

testRunner.status = "FINISHED" 
log.info "TEST RUNNER STATUS after update" + testRunner.getStatus 

而我的整個測試是確定(綠壩)

我知道這是一個有點棘手,但只要我設置了適當的條件來更新這些參數,我肯定不會隱藏真實的故障。

如果有人有一個更清潔的方式來做到這一點,我會很感激