2017-10-17 104 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 

而我的整个测试是确定(绿坝)

我知道这是一个有点棘手,但只要我设置了适当的条件来更新这些参数,我肯定不会隐藏真实的故障。

如果有人有一个更清洁的方式来做到这一点,我会很感激