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. 任务五:零基础HTML及CSS编码(二)

    面向人群: 零基础或初学者 难度: 简单 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理性,但即使如此,真正决定课 ...

  2. BUG笔记 1.0

    似乎只要coding,这些代码就要跟我过不去似的 今天在linux上安装了mysql-server,想不到竟然被一个及其简单的问题给难住了. 是的,我竟然无法登陆!!! 在论坛,百度,google上苦 ...

  3. mac rar文件解压缩

    在下载文件时经常遇到RAR格式的压缩文件, 之前从APP Store下载了免费的解压软件, 但是总觉着不好用, 广告信息很多. 好用的软件都要花钱, 所以找到了命令行解决的办法. 步骤如下: 首先需要 ...

  4. Http请求封装(对HttpClient类的进一步封装,使之调用更方便。另外,此类管理唯一的HttpClient对象,支持线程池调用,效率更高)

    package com.ad.ssp.engine.common; import java.io.IOException; import java.util.ArrayList; import jav ...

  5. phpstorm的全局操作快捷键ctrl+shift+f被搜狗占用处理方法

    1.找到搜狗软件,右键选择属性设置 2.如图选择系统功能快捷键 3.去掉简繁切换快捷方式,确定后即可使用phpstorm的ctrl+shift+f来进行全局查找

  6. python_random模块

    random模块 import random print(random.random()) # 大于0且小于1之间的小数 print(random.randint(1, 6)) # 大于等于1且小于等 ...

  7. STM32定时器的两个小难点

    TIM1 TIM8 挂在APB2上 一般为72M 也即APB2分频系数为1其余TIMER可以认为都挂在APB1上,一般为36M 也即APB1分频系数为2 或者更大 至少为2 APB1不能超过36M定时 ...

  8. 如何将数据放入下拉框List值

    最近在做下拉框,里面放入值大概有这几种 //仓库业务类型 第一种 model.addAttribute("warehouseBizTypeList", basePropertySe ...

  9. Jmeter接口测试实战-Cookies

    场景: 接口测试时常都需要登录,请求方式(post), 登录常用的方法有通过获取token, 获取session, 获取cookie, 等等. 这几种都有一个共同的特点, 有效期(expires). ...

  10. POJ 1273 Drainage Ditches【图论,网络流】

    就是普通的网络流问题,想试试新学的dinic算法,这个算法暑假就开始看国家集训队论文了,之前一直都只用没效率的EK算法,真正学会这个算法还是开学后白书上的描述:dinic算法就是不断用BFS构建层次图 ...