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>

展示结果如图

Robotframework集成jenkins执行用例的更多相关文章

  1. RobotFramework与Jenkins集成后构建成功率高于设置阈值但总是显示失败

    摘要:robot执行后总是失败 1.在配置jenkins的job时,添加构建步骤Execute Windows batch command,输入执行robotframework测试用例命令 2.然后j ...

  2. robotframework之用cmd去执行用例

    1.电脑cmd进入 2.在cmd中输入相应的执行命令即可以正常执行 3.执行完成,会显示当前用例执行情况,以及output/log/report的默认保存路径 接下来详细说一下执行不同用例的具体指令, ...

  3. 关于自动化测试环境的集成(Jenkins+RobotFramework+TestLink+SVN)

    本人主要从事网络安全产品的测试,由于一些产品功能在后期稳定后每个版本的迭代仍需要投入大量的时间和精力去测试,所以近期计划逐步的去了解自动化测试的一些内容来节省和解放一些资源.由于自己并没有什么编码基础 ...

  4. robotframework执行用例时,报错selenium.common.exceptions.WebDriverException: Message: unknown error: cannot get automation extension from unknown error: page could not be found: chrome-extension://aapnijgdinl

    在用robotframework编写移动端测试用例(用chrome浏览器模拟手机浏览器),执行用例时, 报错selenium.common.exceptions.WebDriverException: ...

  5. 一个基于集成jenkins的测试平台

    (一)先看测试业务的情况: 有各种各样的任务包括代码构建.部署搭建.单元测试.功能自动化测试(包括许多模块的功能自动化测试,有十几个居多),性能测试.正确性验证:复杂一点的是这些任务在不同的测试阶段中 ...

  6. 持续集成Jenkins+sonarqube部署教程

    1 引言 1.1 文档概要 本文主要介绍jenkins,sonar的安装与集成,基于ant,maven构建.用一个例子介绍jenkins的编译打包部署,代码检查.最后集成jenkins.(现阶段只是简 ...

  7. jenkins执行构建并查看结果

    继完成构建项目配置http://www.cnblogs.com/yajing-zh/p/5111060.html后,则要执行构建. 回到jenkins主页之后,我们看到一个新建的项目显示出来: 点击进 ...

  8. 持续化集成Jenkins的系统配置

    最近在研究selenium2自动化测试,用到持续化集成jenkins.由于之前仅限于使用,而没有真正动手配置过,所以现在学习从零开始,搭建持续化集成,故而有了这篇博客. 先介绍一下项目持续集成测试,这 ...

  9. Postman-CI集成Jenkins

    Postman-简单使用 Postman-进阶使用 Postman-CI集成Jenkins Newman 官方说明:Postman's command-line companion lets you ...

随机推荐

  1. PHP15 Smarty模板

    学习目标 Smarty基本概念 Smarty安装和配置 Smarty模板设计 Smarty流程控制 Smarty基本概念 一种模板引擎,在系统中进行预处理和过滤数据.是主流的PHP模板引擎,此外PHP ...

  2. Navicat将表转为模型

    右键数据库 -> 逆向数据库到模型

  3. 122. Best Time to Buy and Sell Stock II@python

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  4. 拖拽功能-jquery

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. 10MongoDB

    一.  介绍MongoDB 1. NoSQL 1)“NoSQL”⼀词最早于1998年被⽤于⼀个轻量级的关系数据库的名字 随着web2.0的快速发展, NoSQL概念在2009年被提了出来 2)NoSQ ...

  6. JavaScript:对Object对象的一些常用操作总结

    JavaScript对Object对象的一些常用操作总结. 一.Object.assign() 1.可以用作对象的复制 var obj = { a: 1 }; var copy = Object.as ...

  7. JavaScript基础对象---Map

    一.创建Map对象 Map 对象保存键值对.任何值(对象或者原始值) 都可以作为一个键或一个值 1.构造函数 语法:new Map([iterable])参数:         iterable  可 ...

  8. 高可用技术之keepalived原理简单了解

    Keepalived 工作原理 keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议. 虚拟路由冗余协 ...

  9. 前端基础之JavaScript_1

    摘要: JavaScript简介 引入方式 语言规范 JavaScript语言基础 变量声明 数据类型 运算符 流程控制 函数 词法分析 内置对象 一.JavaScript概述 1.ECMAScrip ...

  10. 使用js获取页面的各种高度

    使用js获取相关高度: 获取网页被滚动条卷去的高度——兼容写法: scrollHeight = documen.body.scrollTop || document.documentElement.s ...