OrderSettings

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

Formatter configuration

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

robocop format --select OrderSettings

You can also disable OrderSettings:

robocop format --configure OrderSettings.enabled=False

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

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

*** Test Cases ***
Test
    [Setup]    Setup
    [Teardown]    Teardown
    [Documentation]    Test documentation.
    [Tags]    tags
    [Template]    Template
    [Timeout]    60 min
    Test Step


*** Keywords ***
Keyword
    [Teardown]    Keyword
    [Return]    ${value}
    [Arguments]    ${arg}
    [Documentation]    this is
    ...    doc
    [Tags]    sanity
    Pass
*** Test Cases ***
Test
    [Documentation]    Test documentation.
    [Tags]    tags
    [Template]    Template
    [Timeout]    60 min
    [Setup]    Setup
    Test Step
    [Teardown]    Teardown


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

Configure order of the settings

Default order can be changed using following parameters:

  • keyword_before = documentation,tags,arguments,timeout,setup

  • keyword_after = teardown,return

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

  • test_after = teardown

For example:

robocop format --configure OrderSettings.test_before=setup,teardown -c OrderSettings.test_after=documentation,tags

It is not required to overwrite all orders - for example configuring only test_before and test_after keeps keyword order as default.

*** Test Cases ***
Test case 1
    [Documentation]    this is
    ...      doc
    [Teardown]    Teardown
    Keyword1
    [Tags]
    ...    tag
    [Setup]    Setup  # comment
    Keyword2


*** Keywords ***
Keyword
    [Documentation]    this is
    ...    doc
    [Tags]    sanity
    [Arguments]    ${arg}
    Pass
    [Teardown]    Keyword
*** Test Cases ***
Test case 1
    [Setup]    Setup  # comment
    [Teardown]    Teardown
    Keyword1
    Keyword2
    [Documentation]    this is
    ...    doc
    [Tags]
    ...    tag


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

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

robocop format -c OrderSettings.keyword_before= -c OrderSettings.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:

robocop format -c OrderSettings.test_before=teardown

We need to overwrite both orders:

robocop format -c OrderSettings.test_before=teardown -c OrderSettings.test_after=

Splitting configuration

Robocop combines split configuration. It is possible to configure the same transformer in multiple CLI commands or configuration entries:

robocop format -c OrderSettings.keyword_before=documentation,tags,timeout,arguments,setup -c OrderSettings.keyword_after=teardown,return

Configuration files can also contain spaces for better readability.

[tool.robocop format]
configure = [
    "OrderSettings: keyword_before = documentation, tags, timeout, arguments, setup",
    "OrderSettings: keyword_after = teardown, return",
]

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