正确的测试用例执行给出 'Failed' 状态
Correct test Case execution gives a 'Failed' status
我在执行测试用例时遇到一个奇怪的问题。
我有一个具有以下结构的测试用例:
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。
我意识到问题来自转到步骤:
我循环回到 SOAP 请求以检查状态,而返回的状态设置为 'pending'。所以每次请求 returns 'pending' 都会失败,我会再次发送检查请求。
当状态最终为 'success' 时,testStep 变为绿色(OK)并且 testCase 继续。
在整体结果中,多次播放的testStep每次都存储一次'iteration',而且只有最后一次的结果是OK的,所以整体测试状态是FAILED。
这个问题有一个解决方法:
我检查了测试结果并检查了我的一些测试步骤在 testRunner.results 中被认为是失败的。为此,我在拆解脚本选项卡中设置了以下代码
for (testStep in testRunner.getResults()){
log.info "status " + testStep.getTestStep().getName() + " : " + testStep.getStatus()
}
这些步骤是我正在循环的步骤,等待与 'pending' 不同的状态。
在测试结束时,由于状态最终为 'success',因此在 testCase(绿色标记)中将步骤设置为 OK,即使多次出现 testStep 为 'failed'(这令人困惑)
所以我发现我可以通过执行以下相关步骤来更新这些状态:
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
我的总体测试还可以(绿色条)
我知道这有点棘手,但只要我设置适当的条件来更新这些参数,我肯定不会隐藏真正的失败。
如果有人有更简洁的方法来做到这一点,我将不胜感激
我在执行测试用例时遇到一个奇怪的问题。
我有一个具有以下结构的测试用例:
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。
我意识到问题来自转到步骤: 我循环回到 SOAP 请求以检查状态,而返回的状态设置为 'pending'。所以每次请求 returns 'pending' 都会失败,我会再次发送检查请求。 当状态最终为 'success' 时,testStep 变为绿色(OK)并且 testCase 继续。
在整体结果中,多次播放的testStep每次都存储一次'iteration',而且只有最后一次的结果是OK的,所以整体测试状态是FAILED。
这个问题有一个解决方法:
我检查了测试结果并检查了我的一些测试步骤在 testRunner.results 中被认为是失败的。为此,我在拆解脚本选项卡中设置了以下代码
for (testStep in testRunner.getResults()){
log.info "status " + testStep.getTestStep().getName() + " : " + testStep.getStatus()
}
这些步骤是我正在循环的步骤,等待与 'pending' 不同的状态。 在测试结束时,由于状态最终为 'success',因此在 testCase(绿色标记)中将步骤设置为 OK,即使多次出现 testStep 为 'failed'(这令人困惑)
所以我发现我可以通过执行以下相关步骤来更新这些状态:
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
我的总体测试还可以(绿色条)
我知道这有点棘手,但只要我设置适当的条件来更新这些参数,我肯定不会隐藏真正的失败。
如果有人有更简洁的方法来做到这一点,我将不胜感激