Оператор вложенных ключевых слов выполнения в Robot Framework - PullRequest
0 голосов
/ 28 мая 2020

Мне нужно выполнить вложенный оператор ключевого слова run, и я следую нижеприведенному коду в функции:

${value}=  Run keyword And Return Status   Dictionary Should Contain Key  ${details}  edit
    Run Keyword If   '${value}'=='True' 
    ...  Run Keywords
        ...    Run Keyword If  '&{details}[edit]'=='Block1'  Log  Block1 Call
        ...    AND  Run Keyword If  '&{details}[edit]'=='Block2'  Log  Block2 Call
        ...    AND  Run Keyword If  '&{details}[edit]'=='Block3'  Log  Block3 Call
        ...    AND  Run Keyword If  '&{details}[edit]'=='Block4'
                    ...  Run Keywords
                            ...  Log  Block4 1 Call
                                ...    AND  Log  Block4 2 Call
                                ...    AND  Log  Block4 3 Call
        ...    AND  Run Keyword If  '&{details}[edit]'=='Block5'
                     ...  Run Keywords
                            ...  Log  Block5 1 Call
                                ...    AND  Log  Block5 2 Call
                                ...    AND  Log  Block5 3 Call

Когда я передаю значение как Block2 , оно возвращает:

Block2 Call
Block4 2 Call
Block4 3 Call

Also, it does not return correct response with values 'Block4' and 'Block5'
I have tried this with ELSE If Statements also, but still this does not work.

Does Run Keyword does not support the Nested Statements?  Or Is there any other which by which this can be accomplished?

1 Ответ

1 голос
/ 29 мая 2020

Решено, поместив все условия в отдельный метод:

${value}=  Run keyword And Return Status   Dictionary Should Contain Key  ${details}  edit
    Run Keyword If   '${value}'=='True'  Run_Conditions  &{details}

Run_Conditions
     [Arguments]  &{details}
     Run Keyword If  '&{details}[edit]'=='Block1'  Log  Block1 Call
     Run Keyword If  '&{details}[edit]'=='Block2'  Log  Block2 Call
     Run Keyword If  '&{details}[edit]'=='Block3'  Log  Block3 Call
     Run Keyword If  '&{details}[edit]'=='Block4'
     ...  Run Keywords
           ...  Log  Block4 1 Call
           ...    AND  Log  Block4 2 Call
           ...    AND  Log  Block4 3 Call
     Run Keyword If  '&{details}[edit]'=='Block5'
     ...  Run Keywords
          ...  Log  Block5 1 Call
          ...    AND  Log  Block5 2 Call
          ...    AND  Log  Block5 3 Call

...