#robotframework
#robotframework
Вопрос:
У меня проблемы с написанием условий if в Robot Framework. Мне нужно знать, завершен ли процесс успешно все еще выполняется. У меня есть цикл с таймаутом, который ожидает, пока процесс не завершится неудачно успешно (выполнено)
Я не уверен, как: — выйти из обращения и не пройти тест — только если процесс завершился неудачно.
— притормозите из обращения и пройдите тест — только если процесс «успешен» выполнен.
вот код Python:
for i in range(timeout):
if wait_for_failed_proccess is True:
result = False
break
if wait_for_success_process is True:
result = True
break
time.sleep(1000)
return result
код robot framework:
${result} = Test process waiter
Run keyword if| ${result}==False---> need to fail test. the process has failed
Run keyword if| ${result}==True---> test passed. continue to the next test
Test process waiter
[documentation] wait until process is done
[timeout] 25 min
For ${index} IN RANGE [TIMEOUT]
run keyword if|Validate failed process==Ture|${result}=False|Exist From loop
run keyword if|Validate success process==Ture|${result}=True|Exist From loop
Sleep 10
END
[return] result
Validate failed process
[documentation] confirmed process failed
Element should contain ${message} Failed
Validate success process
[documentation] confirmed process is done
Element should contain ${message} Completed successfully
Ответ №1:
Наиболее распространенный способ сделать это, чтобы ваш код python вызывал исключение, а не возвращал True
или False
:
for i in range(timeout):
if wait_for_failed_proccess is True:
raise Exception("Process timed out")
...
...
С учетом вышесказанного вам не нужно ничего делать в своем тесте — если это ключевое слово вызывает исключение, тест автоматически завершится неудачей.
Если вы предпочитаете возвращать значение true или false, вы можете использовать встроенное ключевое слово fail:
Run keyword if | ${result}==False | fail | Process timed out