#robotframework
Вопрос:
Я очень новичок в работе с роботами, и мне нужно написать тесты роботов, которые пройдут, если будут выполнены следующие два условия:
Should Not Contain ${response.json()['errorDetails']['errorDescription']} ${error1}
Should Not Contain ${response.json()['errorDetails']['errorCode']} ${error2}
В случае, если ответ не является ответом на ошибку, вышеуказанные условия не будут выполнены, поскольку ответ не содержит ключа «errorDetails».
Resolving variable '${response.json()['errorDetails']['errorDescription']}' failed: KeyError: 'errorDetails'
Например, это также допустимый ответ, который не будет иметь атрибута «errorDetails»:
{"respStatus":"SUCCESS","respObj":{"message":"Object created"}}
Как мне переписать условия теста, чтобы не допустить сбоя, если ответ не содержит такого атрибута «errorDetails»?
Ответ №1:
Вы можете ввести свой чек в ключевое слово, а затем использовать Run keyword if
его для запуска проверки только при выполнении условия.
вот пример:
*** Test cases ***
my_test
${json} = Create Dictionary foo=bar
# next statement will not be launched in that case
# but it will be launched if errorDetails key is present in the JSON
Run keyword if 'errorDetails' in ${json} check_error_details ${json}
*** Keywords ***
check_error_details
[Arguments] ${json}
Should Not Contain ${json['errorDetails']['errorDescription']} ${error1}
Should Not Contain ${json['errorDetails']['errorCode']} ${error2}