Почему тестовый случай останавливается, даже если используется FailureHandling.CONTINUE_ON_FAILURE - PullRequest
1 голос
/ 03 июля 2019

Я не понимаю, почему тестовый пример остановлен, тогда как я использую FailureHandling_CONTINUE_ON_FAILURE в вызывающей стороне.

Код для звонящего:

...
switch (testCaseName) {
    case testCaseName:
        WebUI.callTestCase(findTestCase(testCaseName), param, FailureHandling.CONTINUE_ON_FAILURE)
        break
}
...

Ошибка вызываемого абонента:

Эта ошибка произошла в тестовом примере, вызванном с WebUI.callTestCase(...)

Причина: com.kms.katalon.core.webui.exception.WebElementNotFoundException: веб-элемент с идентификатором: "XXX", расположенный по "By.xpath: XXX"], не найден

Но, если я использую FailureHandling_CONTINUE_ON_FAILURE, вызываемый абонент должен быть остановлен, а не вызывающий, верно?

Спасибо за помощь

1 Ответ

1 голос
/ 03 июля 2019

Мне удалось частично воспроизвести проблему.Я написал следующие два контрольных примера:

TC1: Абонент

println ">>>> start caller"
if(!WebUI.callTestCase(findTestCase("Callee"), null, FailureHandling.OPTIONAL)){
    println ">>>> success!"
}
println ">>>> end caller"

TC2: Callee

println ">>>> start callee"
assert 0

Это вывод моей консоли с FailureHandling.OPTIONAL:

2019-07-03 12:43:41.851 DEBUG testcase.Caller                          - 1: println(">>>> start caller")
>>>> start caller
2019-07-03 12:43:41.855 DEBUG testcase.Caller                          - 2: if (!(callTestCase(findTestCase("Callee"), null, OPTIONAL)))
2019-07-03 12:43:41.934 INFO  c.k.katalon.core.main.TestCaseExecutor   - --------------------
2019-07-03 12:43:41.934 INFO  c.k.katalon.core.main.TestCaseExecutor   - CALL Test Cases/Callee
2019-07-03 12:43:42.086 DEBUG testcase.Callee                          - 1: println(">>>> start callee")
>>>> start callee
2019-07-03 12:43:42.087 DEBUG testcase.Callee                          - 2: assert 0
2019-07-03 12:43:42.095 ERROR c.k.katalon.core.main.TestCaseExecutor   - ❌ Test Cases/Callee FAILED.
Reason:
Assertion failed: 

assert 0

    at Callee.run(Callee:18)
    at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
    ....

2019-07-03 12:43:42.104 INFO  c.k.katalon.core.main.TestCaseExecutor   - END CALL Test Cases/Callee
2019-07-03 12:43:42.104 INFO  c.k.katalon.core.main.TestCaseExecutor   - --------------------
2019-07-03 12:43:42.109 WARN  c.k.k.core.keyword.internal.KeywordMain  - Unable to call Test Case 'Test Cases/Callee' (Root cause: com.kms.katalon.core.exception.StepFailedException: Call Test Case 'Test Cases/Callee' failed
    at com.kms.katalon.core.keyword.builtin.CallTestCaseKeyword$_callTestCase_closure1.doCall(CallTestCaseKeyword.groovy:63)
    ....
Caused by: Assertion failed: 

assert 0

    at Callee.run(Callee:18)
    at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
    ...
)
2019-07-03 12:43:42.110 DEBUG testcase.Caller                          - 1: println(">>>> success!")
>>>> success!
2019-07-03 12:43:42.111 DEBUG testcase.Caller                          - 3: println(">>>> end caller")
>>>> end caller
2019-07-03 12:43:43.067 INFO  c.k.katalon.core.main.TestCaseExecutor   - END Test Cases/Caller

Итак, TC2 не удалось, но WebUI.callTestCase() выдает исключение, которое интерпретируется как WARN в журналах, поэтому TC1 пройдено.

Когда я переключаюсь на FailureHandling.CONTINUE_ON_FAILURE, это интерпретируется как ОШИБКА в журналах, и оба TC1 и TC2 завершаются неудачно.Подробнее об обработке ошибок здесь .

Я считаю, что это ошибка в Katalon Studio.Но я думаю, что вы можете использовать FailureHandling.OPTIONAL в качестве обходного пути для получения желаемого результата.

...