Не задана переменная ключевого слова RobotFramework

Я создаю набор дымовых тестов для серии API, используя RobotFramework и RobotRequestsLibrary. Я впервые использую RobotFramework. Пытаясь очистить код и сделать его более удобным в сопровождении, я решил попробовать использовать ключевые слова, чтобы удалить все второстепенные детали.

Например, вот два теста, которые я хочу очистить:

*** Variables ***
${sint}  http://int.somecoolwebsite.com

*** Test Cases ***
Retrieve Store Info By Code Should Return Successful
    [Tags]  get
    Create Session  data-int  ${sint}
    ${resp}=        Get Request  int  /store/1234
    Should Be Equal As Strings   ${resp.status_code}  200

Retrieve All Store Info Should Return Successful
    [Tags]  get
    Create Session  data-int  ${sint}
    ${resp}=        Get Request  int  /stores
    Should Be Equal As Strings   ${resp.status_code}  200

И моя попытка использовать ключевые слова:

*** Variables ***
${sint}  http://int.somecoolwebsite.com

*** Keywords ***
Make ${call} Call To ${end_point}
    Create Session  ${sint}  ${sint}
    ${resp} =  Get Request  ${sint}  ${end_point}
    ${status} =  ${resp.status_code}
    Set Test Variable  ${status}

Status Should Be ${required_status}
    Should Be Equal  ${status}  ${required_status}

*** Test Cases ***
Retrieve Store Info By Code Should Return Successful
    [Tags]  get
    Make Get Call To /store/1234
    Status Should Be 200

Retrieve All Store Info Should Return Successful
    [Tags]  get
    Make Get Call To /stores
    Status Should Be 200

Когда я запускаю тестовые примеры с ключевыми словами, я получаю следующую ошибку:

Keyword name cannot be empty.

Я попытался отладить проблему и поставил точку останова в назначении ключевого слова, и я заметил, что ${resp} назначается, а ${resp.status_code} также работает. Но когда я пытаюсь назначить {$status}= ${resp.status_code}, выдается ошибка.

Я пробовал разные способы переназначить переменную, используя встроенную функцию Set Variable, но мне не повезло. Вы не можете назначать переменные таким образом в Ключевые слова? Любое понимание будет полезно. Спасибо!!


person Ptrkcon    schedule 23.11.2016    source источник
comment
извините, у меня нет времени копаться в этом, но из краткого прочтения можно сказать, что стиль, управляемый данными, может лучше подойти для того, что вы пытаетесь сделать - robotframework.org/robotframework/latest/   -  person shicky    schedule 23.11.2016
comment
Код в вашем вопросе не дает ошибки, о которой вы говорите. Этот код отлично работает для меня.   -  person Bryan Oakley    schedule 23.11.2016
comment
@BryanOakley, ты прав. Я добавил объявление Set Variable при написании кода здесь. Без этого выдает ошибку. Но в тестовых случаях мне не нужно использовать это объявление.   -  person Ptrkcon    schedule 24.11.2016
comment
Мы не сможем вам помочь, если вы не покажете код, который воспроизводит проблему.   -  person Bryan Oakley    schedule 24.11.2016
comment
Я обновил код, поэтому он выдает ошибку.   -  person Ptrkcon    schedule 24.11.2016
comment
Все равно не выдает эту ошибку. Попробуйте вырезать и вставить код вопроса в файл (и только код вопроса). Вы увидите, что перед той, о которой вы спрашиваете, возникают другие ошибки.   -  person Bryan Oakley    schedule 24.11.2016


Ответы (1)


Несмотря на то, что код в вопросе по-прежнему не дает ошибки, о которой вы говорите, потому что есть другие ошибки, которые вообще не позволяют ему работать, проблема заключается в этой строке:

${status} =  ${resp.status_code}

Это неправильный способ присваивания переменных. Вы должны использовать ключевое слово Set Variable (или некоторые другие «Установить» ключевые слова) , например:

${status}=  Set Variable    ${resp.status_code}

Причина, по которой вы получаете ошибку, заключается в том, что каждый шаг теста или ключевого слова должен иметь ключевое слово. У вас есть только имена переменных и нет ключевого слова, поэтому вы получаете ошибку Keyword name cannot be empty.

person Bryan Oakley    schedule 24.11.2016