主要观点:使用pabot并行运行robotframework,可以解决:robotframework执行案例时间长的问题

解决执行案例时间长的方案:

目的:

缩短案例的运行时间

两种方法:  

  1. 将大的项目分成几个子模块,测试案例也是分为几个子模块,这样进行分布式测试
  2. 在一台机子上开启多个进程进行测试

解决方案:

使用pabot类库:

pabot 通过开启多个进程以Suite为单位并行运行robotframework测试案例,并且对于进程之间资源共享的问题也有锁机制。

安装:

pip install robotframework-pabot

pabot命令行参数:

  • --processes [NUMBER OF PROCESSES] ——> 并行的线程数(最大是机器CPU的数目)
  • --pabotlib启动PabotLib远程服务器。这支持在并行测试执行之间进行锁定和资源分配。
  • --pabotlibhost [HOSTNAME] ——> 远程服务器的主机名(默认是127.0.0.1)
  • --pabotlibport [PORT] ——> PabotLib远程服务器端口号(默认为8270)
  • --resourcefile [FILEPATH]可以包含用于分配资源的共享变量的文件的指示符。这需要与pabotlib选项一起使用。

实际测试:

这里新建一个pabotdemo文件夹,下面包含有3个测试用例文件(即:3个Suite),每个文件中包含有3个Test(即:3个测试用例)。每个测试用例都是执行相同的步骤sleep 10s。如果在RF中运行9个Test,每个Test耗时10s,那就需要90s。

下图为在RF中运行的测试结果:

使用pabot开启2个进程:pabot --processes 2 PabotDemo,耗时:63s

使用pabot开启3个进程:pabot --processes 2 PabotDemo,耗时:32s

上面简单测试,没有进程间的资源共享,所以没加锁,具体使用可以参考:https://github.com/mkorpela/pabot

注意:Pabot并行运行是以Suite为单位运行的,因为项目的案例结构有的Suite中案例个数100多个,有的只有几个,这样就导致案例少的Suite几个可能已经运行完了,案例多的Suite可能才刚开始,并不能发挥并行运行的最大效果,分布不均,所以需要对案例进行调整,将案例多的Suite进行拆分,这样也能开启多个进程。

使用pabot并行执行robotframework用例的更多相关文章

  1. RobotFramework 用例出错后继续操作

    出错后退出 在默认情况下,当一个测试用例中的某个关键字返回错误时,这个测试用例就停止执行剩余的关键字.RF会继续执行下一个用例.这么做的好处是节省时间--反正这里出问题要返回来看了,再继续执行剩下的关 ...

  2. robotframework用例标签的使用

    *** Settings ***Force Tags req-42Default Tags owner-john smoke *** Variables ***${HOST} 10.0.1.42 ** ...

  3. 第一天:学会如何在pycharm上编写第一条robotframework用例

    ---恢复内容开始--- 1.python环境的安装和依赖包的下载

  4. 自动化测试框架Cucumber和RobotFramework的实战对比

    转自: http://www.infoq.com/cn/articles/cucumber-robotframework-comparison   一.摘要 自动化测试可以快速自动完成大量测试用例,节 ...

  5. robotframework框架 - 在Pycharm当中编写RobotFramework测试用例

    众所周知,pycharm是个写python极好用的编辑器.也可以装很多的插件来完成各种骚操作. 某一天,心血来潮在pycharm的插件库里,搜索了一下robot,恩,发现有支持robotframewo ...

  6. Robot Framework 环境安装(一)

    1.安装python:https://www.python.org/2.安装python的第三方库:robotframework (1)检查是否支持pip命令. (2)robotframework安装 ...

  7. 自动化测试框架Cucumber和Robot Framework的实战对比

    自动化测试框架Cucumber和RobotFramework的实战对比 一.摘要 自动化测试可以快速自动完成大量测试用例,节约巨大的人工测试成本:同时它需要拥有专业开发技能的人才能完成开发,且需要大量 ...

  8. jenkins multijob 插件使用

    如果你想要停止对下游/上游工作链定义的混乱 当您想要添加具有层次结构的任务时,按顺序执行或并行执行 安装multijob插件可以让jenkins任务按照分组.顺序执行 jenkins版本:2.80 1 ...

  9. 章节十六、6-xml参数化and并行case

    一.读取xml文件中参数 1.案例演示--->创建一个需要读取数据的类 package testclasses; import org.testng.annotations.Test; impo ...

随机推荐

  1. hdu6109(并查集+set/倍增)

    题目 http://acm.hdu.edu.cn/showproblem.php?pid=6109 分析 对于相同的条件,明显直接并查集 对于不同的条件,可以用set来保存,并查集合并的时候也要对se ...

  2. java面向对象day01

    前言: 1.首先我们要明白:万物皆对象.现实中存在的事物都是对象.而面向对象技术就是对客观事物进行抽象.2.而java语言是纯面向对象的的语言,它具有描述对象及其相互之间关系的语言成分.3.定义类和建 ...

  3. SQL根据某一父节点查询所有子节点,无限

    ;with cte as( select id,ParentCategoryId from Category where id = 17 union all select a.id,a.ParentC ...

  4. 框架-弹出选择框(Jquery传递Json数组)

    给一个button按钮,执行方法 Json传值$("body").on("click", "#btnsure", function() {  ...

  5. GO语言 --socket.io

    socket.io是对websocket的封装以及扩展, 可以跨平台使用, 具体可看官网.. GO语言实现: package main import ( "github.com/googol ...

  6. 关于maven多个模块的build顺序 [INFO] Reactor Build Order

    对于一个maven项目,如果有多个模块,那么它们的执行顺序是什么样的呢? 在执行mvn操作的时候,你可以看到如下信息,这个便是maven的build顺序 那么maven是如何决定顺序的呢?如下: 在多 ...

  7. [Javascript] Understanding the .constructor property on JavaScript Objects

    Constructor functions hold an interesting purpose in JavaScript. Unlike in classical languages, they ...

  8. Web开发从零单排之一:在新浪云平台SAE上开发一个html5电子喜帖

    需求描述: 本人大婚将至,女朋友说“现在都流行在微信上发电子请帖了,你不是技(cheng)术(xu)宅(yuan)嘛,不会连这个都搞不定吧” 本人嘴上说这等小事何足挂齿,但心里还是七上八下的,虽然自认 ...

  9. mysql字段A复制到字段B,并替换指定字符

    ',字段a); eg:update `hy_b_pro` set goldWeight=jinJinZhong;

  10. SSH三大框架整合配置详细步骤(1)

    配置Struts2.0 3.1 基础配置 1)引入Struts必需的五个jar包.下载struts-2.1.6-all.zip解压后,struts-2.1.6\lib目录下是struts所有的相关ja ...