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 Script : 恢复自定义属性

所有这些步骤都成功执行,我没有记录任何错误,但整体测试的状态为 FAILED。

我意识到问题来自 goto 步骤:我正在循环返回 SOAP 请求以检查状态,而返回的状态设置为“待定”。因此,每次请求返回“待处理”时,它都会失败,我再次发送检查请求。当状态最终为“成功”时,testStep 变为绿色(OK)并且 testCase 继续。

在整体结果中,多次播放的testStep每次“迭代”存储一次,只有最后一次的结果是OK的,所以整体测试状态为FAILED。

4

1 回答 1

1

这个问题有一个解决方法:

我检查了测试结果并检查了我的一些测试步骤在 testRunner.results 中被认为是失败的。为此,我在拆解脚本选项卡中设置了以下代码

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

这些步骤是我正在循环的步骤,等待不同于“待处理”的状态。在测试结束时,由于状态最终为“成功”,因此在 testCase 中将步骤设置为 OK(绿色标记),即使 testStep 多次出现“失败”(令人困惑)

所以我发现我可以更新这些状态,对相关步骤执行以下操作:

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

我只需要确保我只在相关的测试步骤上应用它。

但最后整体状态仍然是 FAILED,仍然在我的拆解脚本中:

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

如果我确定我的步骤和结果,我可以将其覆盖如下:

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

我的整体测试还可以(绿色条)

我知道这有点棘手,但只要我设置适当的条件来更新这些参数,我肯定不会隐藏真正的失败。

如果有人有更清洁的方法来做到这一点,我将不胜感激

于 2017-10-17T13:42:42.130 回答