pabot
robot framewrok 测试并行执行器,可以将一个执行拆分为多个执行并节约测试执行时间
安装
pip install -U robotframework-pabot || setup.py install(https://github.com/mkorpela/pabot)
基础使用
1、将执行拆分为suite 文件
pabot [path to tests]
2、将执行按照测试优先级(test level)拆分
pabot --testlevelsplit [path to tests]
3、使用两种不同的配置运行相同的测试
pabot --argumentfile1 first.args --argumentfile2 second.args [path to tests]
参数
Supports all Robot Framework command line options and also following options (these must be before normal RF options): 在rf 参数之前 --verbose more output 更多输出 --command [ACTUAL COMMANDS TO START ROBOT EXECUTOR] --end-command RF script for situations where pybot is not used directly 不直接使用pybot的情况下的RF脚本 --processes [NUMBER OF PROCESSES] How many parallel executors to use (default max of 2 and cpu count) 默认进程2 --testlevelsplit Split execution on test level instead of default suite level. If .pabotsuitenames contains both tests and suites then this will only affect new suites and split only them. Leaving this flag out when both suites and tests in .pabotsuitenames file will also only affect new suites and add them as suite files. 在测试级别而不是默认套件级别拆分执行。如果 .pabotsuitenames 包含测试和套件,那么这只会影响新套件并仅拆分它们。 当 .pabotsuitenames 文件中的套件和测试都保留此标志时,也只会影响新套件并将它们添加为套件文件。 --resourcefile [FILEPATH] Indicator for a file that can contain shared variables for distributing resources. 可以包含用于分配资源的共享变量的文件的指示符。这需要与 pabotlib 选项一起使用。资源文件语法与 Windows ini 文件相同。其中一个部分是一组共享的变量。 --pabotlib Start PabotLib remote server. This enables locking and resource distribution between parallel test executions. 启动 PabotLib 远程服务器。这可以在并行测试执行之间实现锁定和资源分配。 --pabotlibhost [HOSTNAME] Host name of the PabotLib remote server (default is 127.0.0.1) PabotLib 远程服务器的主机名(默认为 127.0.0.1) 如果与 --pabotlib 选项一起使用, 将更改创建的远程服务器的主机侦听地址(参见https://github.com/robotframework /PythonRemoteServer ) 如果在没有 --pabotlib 选项的情况下使用,将连接到给定主机中已经运行的 PabotLib 远程服务器实例。远程服务器也可以与 pabot 实例分开启动和执行: python -m pabot.pabotlib <path_to_resourcefile> <host> <port> python -m pabot.pabotlib resource.txt 192.168.1.123 8271 这允许与多个 Robot Framework 实例共享资源。 --pabotlibport [PORT] Port number of the PabotLib remote server (default is 8270) PabotLib 远程服务器的端口号(默认为 8270)有关详细信息 --ordering [FILE PATH] Optionally give execution order from a file. 可以选择从文件中给出执行顺序。 --suitesfrom [FILEPATH TO OUTPUTXML] Optionally read suites from output.xml file. Failed suites will run first and longer running ones will be executed before shorter ones. 可选择从 output.xml 文件中读取套件。失败的套件将首先运行,运行时间较长的套件将在较短的套件之前执行。 --argumentfile[INTEGER] [FILEPATH] Run same suite with multiple argumentfile options. For example "--argumentfile1 arg1.txt --argumentfile2 arg2.txt". 使用多个参数文件选项运行相同的套件 实例: pabot test_directory pabot --exclude FOO directory_to_tests pabot --command java -jar robotframework.jar --end-command --include SMOKE tests pabot --processes 10 tests pabot --pabotlibhost 192.168.1.123 --pabotlibport 8271 --processes 10 tests pabot --pabotlib --pabotlibhost 192.168.1.111 --pabotlibport 8272 --processes 10 tests pabot --artifacts png,mp4,txt --artifactsinsubfolders directory_to_tests
pabot.PabotLib
PabotLib 远程服务器。这可以在并行测试执行之间实现锁定和资源分配
有助于执行程序进程之间通信和数据共享的关键字 当您必须确保一次只有一个进程使用某些数据或在被测系统的某个部分上运行时, 参考 PabotLib 文档位于https://pabot.org/PabotLib.html。
实例
test.robot
*** Settings *** Library pabot.PabotLib *** Test Case *** Testing PabotLib Acquire Lock MyLock Log This part is critical section Release Lock MyLock ${valuesetname}= Acquire Value Set admin-server ${host}= Get Value From Set host ${username}= Get Value From Set username ${password}= Get Value From Set password Log Do something with the values (for example access host with username and password) Release Value Set Log After value set release others can obtain the variable values
valueset.dat
[Server1] tags=admin-server HOST=123.123.123.123 USERNAME=user1 PASSWORD=password1 [Server2] tags=server HOST=121.121.121.121 USERNAME=user2 PASSWORD=password2 [Server3] tags=admin-server HOST=222.222.222.222 USERNAME=user3 PASSWORD=password4
运行
pabot --pabotlib --resourcefile valueset.dat test.robot
控制执行顺序和并行度
.pabotsuitenames 文件包含将要执行的套件列表。如果文件不存在,则在 pabot 执行期间创建。该文件是 pabot 在重新执行相同测试以加快处理速度时使用的缓存。
该文件可以部分手动编辑,但更简单的选择是使用--ordering FILENAME
. 前 4 行包含不应编辑的信息 - pabot 将在发生变化时编辑这些信息。在这之后是套件名称。
有了--ordering FILENAME
你可以有一个列表控件也订购。语法与 .pabotsuitenames 文件语法相同,但不包含 .pabotsuitenames 中存在的 4 个哈希行。
有四种可能影响执行:
- suites的顺序可以更改。
- 如果一个目录(或一个目录结构)应该顺序执行,则将目录suites名称添加到一行中。
- 您可以添加一行文本
#WAIT
以强制执行程序等待所有先前的suites执行完毕。 - 您可以通过
{
在组之前和}
之后添加行,将suites和tests组合到同一个执行程序进程中。
全局变量
Pabot 将以下全局变量插入到 Robot Framework 命名空间中。这些是为了启用 PabotLib 功能和自定义侦听器等,以获取有关 pabot 整体执行的一些信息。
PABOTQUEUEINDEX - this contains a unique index number for the execution. Indexes start from 0. PABOTLIBURI - this contains the URI for the running PabotLib server PABOTEXECUTIONPOOLID - this contains the pool id (an integer) for the current Robot Framework executor. This is helpful for example when visualizing the execution flow from your own listener. PABOTNUMBEROFPROCESSES - max number of concurrent processes that pabot may use in execution. CALLER_ID - a universally unique identifier for this execution.