OrderSettings#

Order settings like [Arguments], [Setup], [Return] inside Keywords and Test Cases.

Transformer configuration

OrderSettings is included in the default transformers, but it can be also run separately with:

robotidy --transform OrderSettings src

You can also disable OrderSettings:

robotidy --configure OrderSettings:enabled=False src

Keyword settings [Documentation], [Tags], [Timeout], [Arguments] are put before keyword body and settings like [Teardown], [Return] are moved to the end of keyword.

*** Keywords ***
Keyword
    [Teardown]    Keyword
    [Return]    ${value}
    [Arguments]    ${arg}
    [Documentation]    this is
    ...    doc
    [Tags]    sanity
    Pass
*** Keywords ***
Keyword
    [Documentation]    this is
    ...    doc
    [Tags]    sanity
    [Arguments]    ${arg}
    Pass
    [Teardown]    Keyword
    [Return]    ${value}

Test case settings [Documentation], [Tags], [Template], [Timeout], [Setup] are put before test case body and [Teardown] is moved to the end of test case.

Configure order of the settings#

Default order can be changed using following parameters:

  • keyword_before = documentation,tags,timeout,arguments

  • keyword_after = teardown,return

  • test_before = documentation,tags,template,timeout,setup

  • test_after = teardown

For example:

robotidy --configure OrderSettings:test_before=setup,teardown:test_after=documentation,tags
*** Test Cases ***
Test case 1
    [Documentation]    this is
    ...      doc
    [Teardown]    Teardown
    Keyword1
    [Tags]
    ...    tag
    [Setup]    Setup  # comment
    Keyword2
*** Test Cases ***
Test case 1
    [Setup]    Setup  # comment
    [Teardown]    Teardown
    Keyword1
    Keyword2
    [Documentation]    this is
    ...    doc
    [Tags]
    ...    tag

Not all settings names need to be passed to given parameter. Missing setting names are not ordered. Example:

robotidy --configure OrderSettings:keyword_before=:keyword_after=

It will order only test cases because all setting names for keywords are missing.

Setting name cannot be present in both before/after parts. For example keyword_before=tags:keyword_after=tags configuration is invalid because tags cannot be ordered both before and after. It is important if you are overwriting default order - in most cases you need to overwrite both before/after parts. This configuration is invalid because teardown is by default part of the test_after:

robotidy --configure OrderSettings:test_before=teardown

We need to overwrite both orders:

robotidy --configure OrderSettings:test_before=teardown:test_after=

Settings comments#

Comments next to settings will be moved together.

*** Keywords ***
Keyword
    # comment about step
    Step
    # comment about arguments
    [Arguments]    ${arg}
*** Keywords ***
Keyword
    # comment about arguments
    [Arguments]    ${arg}
    # comment about step
    Step