Robotframework集成jenkins执行用例
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执行用例的更多相关文章
- RobotFramework与Jenkins集成后构建成功率高于设置阈值但总是显示失败
摘要:robot执行后总是失败 1.在配置jenkins的job时,添加构建步骤Execute Windows batch command,输入执行robotframework测试用例命令 2.然后j ...
- robotframework之用cmd去执行用例
1.电脑cmd进入 2.在cmd中输入相应的执行命令即可以正常执行 3.执行完成,会显示当前用例执行情况,以及output/log/report的默认保存路径 接下来详细说一下执行不同用例的具体指令, ...
- 关于自动化测试环境的集成(Jenkins+RobotFramework+TestLink+SVN)
本人主要从事网络安全产品的测试,由于一些产品功能在后期稳定后每个版本的迭代仍需要投入大量的时间和精力去测试,所以近期计划逐步的去了解自动化测试的一些内容来节省和解放一些资源.由于自己并没有什么编码基础 ...
- 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: ...
- 一个基于集成jenkins的测试平台
(一)先看测试业务的情况: 有各种各样的任务包括代码构建.部署搭建.单元测试.功能自动化测试(包括许多模块的功能自动化测试,有十几个居多),性能测试.正确性验证:复杂一点的是这些任务在不同的测试阶段中 ...
- 持续集成Jenkins+sonarqube部署教程
1 引言 1.1 文档概要 本文主要介绍jenkins,sonar的安装与集成,基于ant,maven构建.用一个例子介绍jenkins的编译打包部署,代码检查.最后集成jenkins.(现阶段只是简 ...
- jenkins执行构建并查看结果
继完成构建项目配置http://www.cnblogs.com/yajing-zh/p/5111060.html后,则要执行构建. 回到jenkins主页之后,我们看到一个新建的项目显示出来: 点击进 ...
- 持续化集成Jenkins的系统配置
最近在研究selenium2自动化测试,用到持续化集成jenkins.由于之前仅限于使用,而没有真正动手配置过,所以现在学习从零开始,搭建持续化集成,故而有了这篇博客. 先介绍一下项目持续集成测试,这 ...
- Postman-CI集成Jenkins
Postman-简单使用 Postman-进阶使用 Postman-CI集成Jenkins Newman 官方说明:Postman's command-line companion lets you ...
随机推荐
- 《3+1团队》【Alpha】Scrum meeting 3
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 3+1团队 团队博客地址 https://home.cnblogs.com/u/3-1group ...
- Linux OOM-killer 内存不足时kill高内存进程的策略
OOM_killer是Linux自我保护的方式,当内存不足时不至于出现太严重问题,有点壮士断腕的意味 在kernel 2.6,内存不足将唤醒oom_killer,挑出/proc/<pid> ...
- Java集合系列之HashMap
概要 第1部分 HashMap介绍 HashMap简介 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射.HashMap 继承于AbstractMap,实现了Map.Clo ...
- vue 框架原理
参考:https://segmentfault.com/a/1190000006599500#articleHeader4 记录自己的理解: 核心的响应原理通过Object.definePropert ...
- python基础知识02-序列类型的方法
列表的方法: 增:append() insert() extend()只能添加序列类型. .改li[0]= '123' li.insert(2,'123') 2个参数,位置,值 li.remove(' ...
- Django框架基础知识08-表关联对象及多表查询
1.自定义主键字段的创建 AutoFiled(pirmary_key=True) # 一般不会自定义,int类型,自增长 一般不自定义主键. 2.order_by asc desc from djan ...
- jenkins里跑selenium webdriver,Chrome浏览器不能打开&&unknown error: unable to discover open pages
在windows的cmd里面执行 “python test.py”,毫无问题,浏览器正常打开,测试结果也正常. 问题: 但如果是在jenkins里,选择 “execute windows batch ...
- (一)java集合框架——Iterable
Iterable接口是java 集合框架的顶级接口,实现此接口使集合对象可以通过迭代器遍历自身元素,我们可以看下它的成员方法 修饰符和返回值 方法名 描述 Iterator<T> iter ...
- 安装weblogic时,运行configure.cmd报错、闪退、无法创建域
直接运行configure.cmd时在jar包加载完成时,不提示创建域的过程,而是直接退出程序 命令行: cd /d F:\00uep_rfs\wls1212_dev\wls12120 切换至解压路径 ...
- Codeforces Round #386 (Div. 2) A+B+C+D!
A. Compote 水题(数据范围小都是水题),按照比例找最小的就行了,3min水过. int main() { int a,b,c; while(~scanf("%d%d%d" ...