Robot Framework remote servers allow hosting test libraries on different processes or machines than Robot Framework itself is running on. See the general remote library interface documentation for more information about the remote interface as well as for a list of remote server implementations in other programming languages.
This project is hosted in GitHub and downloads are available in PyPI.
This remote server is implemented with Python and supports also Jython (JVM), IronPython (.NET) and PyPy. Remote server 1.1 and newer support Python 2.6, 2.7, 3.3, and newer. Remote server 1.0 series supports Python versions 2.2-2.7.
Starting from Remote server 1.1, Robot Frameworks normal static, hybrid and dynamic library APIs are all supported. Earlier versions support only the static and hybrid APIs.
For most parts these APIs work exactly like when using with Robot Framework normally. There are, however, some features that are not currently supported:
- Logging using
robot.api.logger
or Python'slogging
module is not supported. - It is not possible to give a custom name to static or hybrid keywords using the
@keyword
decorator.
The easiest installation approach is using pip:
pip install robotremoteserver
Alternatively you can download the source distribution from PyPI, extract it and install the server using:
python setup.py install
The remote server can be started by simply creating an instance of the server and passing a test library instance or module to it:
from robotremoteserver import RobotRemoteServer from mylibrary import MyLibrary RobotRemoteServer(MyLibrary())
By default the server listens to address 127.0.0.1 and port 8270. See the next section for information about configuring the server.
The remote server accepts following configuration parameters:
Argument Default Explanation library
Test library instance or module to host. Mandatory argument. host
'127.0.0.1'
Address to listen. Use '0.0.0.0'
to listen to all available interfaces.port
8270
Port to listen. Use 0
to select a free port automatically. Can be given as an integer or as a string.port_file
None
File to write port that is used. None
means no such file is written.allow_stop
True
Allow/disallow stopping the server using Stop Remote Server
keyword.
Address and port that are used are printed to the console where the server is started. Writing port to a file by using port_file
argument is especially useful when the server selects a free port automatically. Other tools can then easily read the active port from the file. If the file is removed prior to starting the server, tools can also wait until the file exists to know that the server is up and running.
Example:
from robotremoteserver import RobotRemoteServer from mylibrary import MyLibrary RobotRemoteServer(MyLibrary(), host='10.0.0.42', port=0, port_file='/tmp/remote-port.txt', allow_stop=False)
Starting from version 1.0.1 , robotremoteserver
module supports testing is a remote server running. This can be accomplished by running the module as a script with test
argument and an optional URI:
$ python -m robotremoteserver test Remote server running at http://127.0.0.1:8270. $ python -m robotremoteserver test http://10.0.0.42:57347 No remote server running at http://10.0.0.42:57347.
Tip
As discussed below, using stop
instead of test
allows stopping the server. Both testing and stopping should work also against other Robot Framework remote server implementations.
The remote server can be gracefully stopped using several different methods:
- Hitting
Ctrl-C
on the console where the server is running. Does not work reliably with version 1.0 or earlier or if using Python 2.5 or older. - Sending the process
SIGINT
,SIGTERM
, orSIGHUP
signal. Does not work on Windows. Notice that with Jython you need to send the signal to the started Java process, not to the shell typically started byjython
command. - Using
Stop Remote Server
keyword. This can be disabled by usingallow_stop=False
when starting the server. - Running
python -m robotremoteserver stop [uri]
similarly as when testing is server running. Also this can be disabled usingallow_stop=False
. New in version 1.0.1.
The remote server project contains an example that can be studied and also executed once the library is installed. You can get the example by cloning the project on GitHub, and it is also included in the source distribution available on PyPI.