博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Robotframework集成jenkins执行用例
阅读量:6441 次
发布时间:2019-06-23

本文共 3496 字,大约阅读时间需要 11 分钟。

Robotframework+jenkins配置

假设我们完成了一个模块的用例设计,可是想晚上9点或凌晨运行,这时候该怎么实现呢?jenkins可以很好解决我们的疑难。

Jenkins安装

这里简单说下安装,建议下载war包在tomacat中启动或是直接在cmd中使用命令启动jenkins(如果已经使用.msi安装成windows服务了,下面会提到解决方法)。

配置

  • 基本信息

在jenkins主页中,新建 一个自由风格的项目,配置项目的名称等基本信息如图

 

因为这里没有使用svn或git,文件直接保存在本地,所以没有使用源码管理,如果使用了源码管理的可以根据实际情况配置源码管理的配置信息。

  • 构建触发器

这里选择使用Build periodically,进行定时构建,如图

 

这里设置的是每天凌晨2点进行构建。

这里注意选择的是build Periodically,选择的是定时构建,不管代码是否有更新;而另外一个构建方式Poll SCM,则是svn或git代码有更新才会再制定的时间内进行构建

  • 构建

接下来就是构建过程,这里是windows环境,所以使用的是Execute Windows batch command

使用命令执行要运行的用例如pybot.bat -d F:\outputdir F:\test\cswx\,这里-d是将执行结果保存在F:\outputdir目录下,而F:\test\cswx\是需要执行用例的文件夹

 

  • 构建后操作

这里提前需要安装一个插件Public Robot Framework test result

 

如果构建的时候,使用的是默认的输出目录,那么这里的Directory of Robot output 默认为空。

  • 添加接收邮箱

 

  • 执行结果

构建之后查看结果如图

 

 

 

 

 

以Android为例,iOS的启动方式和控件查找略作改动即可。

resource.txt

*** Settings ***

Library         AppiumLibrary

 

*** Variables ***

{REMOTE_URL}  http://0.0.0.0:4800/wd/hub

 

*** Keywords ***

TestStart

    [Documentation]  start application

    Open Application  {REMOTE_URL}  platformName=Android  platformVersion=5.0.0  deviceName=192.168.56.101:5555  app={CURDIR}/snowball-dev.apk  automationName=appium  appPackage=com.xxx.xxxx  appWaitActivity=.view.UnloginHomePageActivity

 

mobile login

    [Arguments]  {user_name}  {password}

    Input Text  id=com.xxx.xxxx:id/phone_number_input  {user_name}

    Input Text  id=com.xxx.xxxx:id/password_input  {password}

    Click Element  id=com.xxx.xxxx:id/login

    Capture Page Screenshot

 

use with login

    Click Element  identifier=登录

    Wait Until Page Contains  注册

test.tx

*** Settings ***

Resource  login_resource.txt

Test Setup     TestStart

Test Teardown  Close Application

 

*** Test Cases ***

手机号登录/退出登录成功

    [Documentation]  手机号登录成功,再退出登录

    [Tags]  login

    use with login

    mobile login  xxxxxx  xxxxx

    Page Should Contain Element  identifier=xxx

    Page Should Contain Element  identifier=xxx

    logout

 

匿名使用再用手机号登录

    [Documentation]  匿名使用后,再用手机号登录

    [Tags]  login

    use without login

    Page Should Contain Element  identifier=xxx

    Page Should Contain Element  identifier=xxx

    Click Element  identifier=xxxx

    Click Element  identifier=xxxx

    Click Element  identifier=xxxxx

    mobile login  xxxx  xxxx

    Click Element  identifier=xxxxx

    Page Should Contain Text  text=xxxx

    logout

jenkins邮件报告

使用email-ext plugin,可以将robotframework的结果集成到邮件报告里。

jelly邮件模板如下:

<!-- Robotframework TEMPLATE -->

  <j:set var="robotAction" value="${it.getAction('hudson.plugins.robot.RobotBuildAction')}" />

  <j:if test="${robotAction!=null}">

    <div class="content">

      <j:set var="robotResult" value="${robotAction.result}" />

      <j:if test="${robotResult!=null}">

        <a href="rooturlrooturl{build.url}robot">

          <h1>UI Test Results</h1>

        </a>

        <img src="${rooturl}static/72341926/plugin/robot/robot.png" />

        <a href="rooturlrooturl{build.url}robot/report/report.html#totals?all"><tt>Robot Test Results</tt></a>

        <table class="border">

          <tr>

            <th class="border">Name</th>

            <th class="border">Suite</th>

            <th class="border">Status</th>

            <th class="border">Duration</th>

          </tr>

          <j:forEach var="suiteResult" items="${robotResult.getAllSuites()}">

            <j:forEach var="caseResult" items="${suiteResult.getCaseResults()}">

              <tr>

                <td class="border">${caseResult.getName()}</td>

                <td class="border">${suiteResult.getName()}</td>

                <j:if test="${caseResult.isPassed()}">

                  <td class="border test_passed">Pass</td>

                </j:if>

                <j:if test="${!caseResult.isPassed()}">

                  <td class="border test_failed">Fail</td>

                </j:if>

                <td class="border test_duration">${caseResult.getDuration()/1000}s</td>

              </tr>

            </j:forEach>

          </j:forEach>

        </table>

      </j:if>

    </div>

  </j:if>

展示结果如图

 

转载于:https://www.cnblogs.com/tester-l/p/8199218.html

你可能感兴趣的文章
一个绘制虚线的非常规函数(常规方法,打印机上绘制不出虚线)
查看>>
获得本机的IP,掩码和网关
查看>>
大数据之 ZooKeeper原理及其在Hadoop和HBase中的应用
查看>>
Delphi中将XML文件数据装入DataSet
查看>>
你刚才在淘宝上买了一件东西
查看>>
发布一个 Linux 下的 C++ 多线程库
查看>>
Python序列类型
查看>>
再谈ThinkPHP
查看>>
Hibernate问题浅析
查看>>
出现访问apache资源直接下载php文件的解决办法-----yum 安装 php mysql
查看>>
七种Mysql表类型
查看>>
归并与归并排序
查看>>
linux和windows互传文件、用户配置文件和密码配置文件、用户组管理、用户管理...
查看>>
spark 应用程序性能优化经验
查看>>
基于Zabbix IPMI监控服务器硬件状况
查看>>
Go语言之并发资源竞争
查看>>
mac本显示隐藏文件或关闭显示隐藏文件
查看>>
ucos-9-ucosII 函数列表1
查看>>
数据结构与算法-双链表(初级)
查看>>
结构体那点事
查看>>