Ответ платформы робота на тест JSON завершается ошибкой, если в ответе отсутствует атрибут

#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}