robot framework report
Since the Robot framework is built on top of Python, importing Python modules inside the Robot framework is a simple process. It allows tremendous flexibility to your code and helps you create your own custom keywords that are better suited for your task than its robot counterparts.
Learning Robot framework's keywords is not worth your cognitive power unless the company you're working for has specially told you to use pure Robot keywords, in which case, may God bless you. For most of our test cases, we would prefer to write the logic in Python and import the keyword in Robot. It makes the automation process faster and cleaner.
In this short article, we will learn to use Python libraries inside your test suite in the Robot framework.
Let's start by creating and starting the virtual environment.
$ mkdir learning-robot $ cd learning-robot $ virtualenv env $ source venv/bin/activate
This is the folder structure:
. ├── func.py ├── ClassA.py ├── test.robot └── venv
Importing python function
Let's start by creating a basic Python script that adds 1 to the integer.
We have a simple function that adds 1 to the input number.
To import the Python script inside Robot, we use the keyword Library in the Robot file under settings.
To call the function, we use
We can assign keywords for Python functions. Generally, it's recommended that for Python files that are imported into Robot, keep the following import in the Python file:
try: from robot.libraries.BuiltIn import BuiltIn from robot.libraries.BuiltIn import _Misc import robot.api.logger as logger from robot.api.deco import keyword ROBOT = False except Exception: ROBOT = False
To add keywords inside the function, we use the keyword decorator.
Here, BuildIn().log_to_console does printing in the Robot terminal. If we run $ robot tests.robot, we see the following output.
terminal report for robot
Import Python classes
It is important that the class name matches the filename. Here, both class name and filename is classA.
For calling the class function, we just have to call
<function_name>. We don't need to specify the file name.
output without ROBOT_LIBRARY_SUITE
If we look at classA.py , the log to console is called only when the class is created. In the output, we can see that the object was created 3 times. That's a lot of overhead and it keeps piling as the number of test cases increase. If we want the object to be created only when the object is created, then we will use ROBOT_LIBRARY_SCOPE = ‘TEST SUITE' in the class.
output with ROBOT_LIBRARY_SUITE