Robot terminology¶
Robot Framework is a generic and independent test automation framework. It has its own expandable test syntax, test runner and test reporting tools. Yet, because of its extensibility it’s very pleasant to work with.
Robot is all about running test clauses called keywords (or, to be more exact, keyword calls with parameters). Every test case may contain one or more keywords, which are run sequentially – usually until the first of them fails. Keyword arguments use two spaces as a separator. Keywords are separated from their arguments (and arguments from each other) using at least two spaces.
Keywords are defined in keyword libraries and as user keywords. Keyword libraries can be Python libraries or XML-RPC-services. User keywords are just lists of test clauses reusing existing keywords or other user keywords. User keywords are described in the test suite, or imported from resource files.
Test suites¶
Robot tests cases are written in test suites, which are plain text files,
usually ending with .robot
(or just .txt
).
Note
Advanced robot users may learn from the Robot Framework User Guide how to make hierarchical test suites.
Let’s look into an example test suite in detail:
Each test suite may contain one to four different parts:
- Settings
Is used to import available keyword libraries or resources (resources are plain text files like test suites, but without test cases) and define possible setup and teardown keywords.
- Variables
Is used to define available robot variables with their default values, or override variables defined in imported resources.
- Test Cases
Is used to define runnable tests cases, which are made of test clauses calling test keywords.
- Keywords
Is used to define new user keywords, which may re-use existing keywords from imported libraries or resource files.
Keywords libraries¶
By default, only keywords from built-in-library are available to be used in tests. Other keywords must be included by importing a keyword library in Settings part of test suite:
*** Settings ***
Force Tags wip-not_in_docs
Library String
Library Selenium2Library
Note
Libraries may also be included in resource files, and then it’s enough to import such resource file.
There’s also a built-in-keyword Import Library
for importing library
in a middle of test case or keyword:
*** Test Cases ***
Test Import library keyword
Import library String
Remote keyword libraries¶
One of the available keyword libraries (shipped with Robot Framework) is special: Remote-library. Remote-library makes it possible to provide test keywords from an XML-RPC-service, for example, from a public Zope2-object.
plone.app.robotframework-provides convention and helpers to enable
customizable set of remote keywords in Python as a public portal-tool object
called RobotRemote
. These keywords can be imported with:
*** Settings ***
Resource plone/app/robotframework/selenium.robot
Library Remote ${PLONE_URL}/RobotRemote
Remote-library approach provides the following benefits when testing Plone:
All test setup keywords can be implemented in Python, which makes their execution almost instant when compared to executing similar steps in Selenium (to make your Selenium tests as fast as possible only the really meaningful steps should be executed through Selenium).
Each keyword call is executed as a normal transaction in Plone, which makes all code behave normally as in real use.
When e.g.
content creation (remote) keywords
are called withautologin
enabled, all actions are performed as the autologin user so author metadata etc is created correctly.
Resource files¶
Resource files provide a re-usable way to abstract your test suites. To put
it simply, resources files are just like all the other .robot
-files, but
they should not contain *** Test Cases ***
certain *** Settings ***
commands (Suite Setup, Suite Teardown, Test Setup or Test Teardown).
Resource files are the perfect way to import common libraries (with Library
command in `*** Settings ***
), define global *** Variables ***
and
define re-usable common `*** Keywords ***`
. Resource files are included
in a test suite with Resource-command in `*** Settings ***
:
*** Settings ***
Resource plone/app/robotframework/keywords.robot
Resource plone/app/robotframework/selenium.robot
Resource plone/app/robotframework/saucelabs.robot
BDD-style tests¶
Robot support Gherkin-style tests by removing exact words given
,
when
, then
and and
from the beginning of keyword to find
a matching keyword.
For example, a clause Given I'm logged in as an admin
:
*** Test Cases ***
Test something as logged in admin
Given I'm logged in as an admin
will match to a keyword I'm logged in as an admin
:
*** Keywords ***
I'm logged in as an admin
Enable autologin as Manager
There’s a little bit more of BDD-style tests available in Robot Framework User Guide.