全网最详细的自动化测试(Jenkins 篇)

学习 Jenkins 自动化测试的系列文章

  1. Robot Framework 概念
  2. Robot Framework 安装
  3. Pycharm + Robot Framework 环境搭建
  4. Robot Framework 介绍
  5. Jenkins 自动化测试

1. Robot Framework 概念

Robot Framework是一个基于Python的,可扩展的关键字驱动的自动化测试框架。

它有几个主要特点: 

  1. 使用简单易用的表格式语法创建测试用例;
  2. 提供从现有关键字扩展到更高级别关键字功能;
  3. 提供易于阅读的结果报告和 HTML 的 log;
  4. 提供标记以分类和选择要执行的测试用例;
  5. 平台和应用程序是独立的;
  6. 支持创建数据驱动的测试用例;

测试数据是简单,易于编辑的表格格式,启动 Robot Framework 时,它会处理测试数据,执行测试用例并生成日志和报告。核心框架对测试中的目标一无所知,与它的交互由测试库处理,库可以直接使用应用程序接口,也可以使用低级测试工具作为驱动程序。 

2. Robot Framework 安装

通过 pip 安装 Robot Framework:

  • 链接下载 python, 设置环境变量,CMD 控制台输入 python 验证是否安装成功。
  • 链接下载 pip,解压,CMD 控制台进入解压目录,输入  python setup.py install  , 安装成功,设置环境变量,输入 pip 验证是否安装成功。
     

     3. pip 安装 wxpython 2.8.12.1: pip install wxpython==2.8.12.1 

  4. pip 安装 robotframework: pip install robotframework

  5. pip 安装 robotframework-selenium2library: pip install robotframework-selenium2library

  6. pip 安装 rtomac-robotframework-selenium2library: pip install rtomac-robotframework-selenium2library

  7. pip 安装 decorator-3.3.3.tar: pip install decorator

  8. pip 安装 robotframework-ride: pip install robotframework-ride

  9. CMD 输入 ride.py, 弹出 RIDE 界面即为 Robot Framework 框架搭建成功。

       10. 创建桌面 RIDE 图标:桌面鼠标右击创建快捷方式, 在请键入对象 处输入  C:\Programs\Python27\pythonw.exe -c "from robotide import main; main()"  ,点击下一步设置图标名称 RIDE 。将图标更改为机器人图标,右击 RIDE 选择属性,点击更改图标, 在浏览器中选择目录 F:\Python27\Lib\site-packages\robotide\widgets 找到 robot.ico,点击确定,图标变为机器人图标 RIDE, Done

提示: 如果 pip 安装时出现如下错误:

是由于未设置代理导致的 timeout, 通过设置代理  pip install wxpython==2.8.12.1 --proxy=<proxy_ip:port>  下载即可解决。

3. Pycharm + Robot Framework 环境搭建

  1.  下载 Pycharm
  2.  Pycharm 中配置 intelliBot:Pycharm 中点击 File -> Settings ->  Plugins, 在 搜索栏输入 intelliBot, 点击安装,需要设置代理的话点击 HTTP Proxy Settings 设置代理下载安装。
  3.  Pycharm 中配置 suite 和 case 的运行环境:

配置 suite: Robot Run TestSuite / -d results $FileName$ / $FileDir$     

    配置 case: Robot Run SingleTestCase / -d results -t "$SelectedText$" ./ / $FileDir$

  4.  测试环境是否搭建成功:

    一个简单的 case:

*** Settings ***
Documentation    Example case for test
Force Tags    owner
Library    Selenium2Library
Library    Collections*** Variables ***
${var}     1
${result}   1*** Test Cases ***
First Case[Documentation]    this is a first case for test example[Tags]    personLog to console    ${var}Log to console    ${result}should be equal    ${result}    ${var}

文件名右击 -> External Tools -> Robot Run TestSuite, 显示测试结果,环境搭建成功 。

4. Robot Framework 介绍

 4.1 变量 Variables

Robot Framework 用 $,@,& 分别表示标量,列表,和字典。在 Variables 下创建变量,一个简单的 case 如下所示:
 

*** Variables ***
${var}  value
@{list}  a  b  c  ${var}
&{dict}  key1=name key2=${list}*** Test Cases ***
First Case
Log to console ${var} 
Log to console ${list} 
Log to console ${dict} 

对应于 python 的语法为 var = “value”, list1 = [‘a’,’b’,’c’,var], dict1={‘key1’:’name’, ‘key2’:list1} 。

用作分隔符的空格可以变化,只要大于两个空格即可,因此可以很好的对齐数据,建议在关键字和参数之间使用 4 个空格 。

4.2 关键字 Keywords

 关键字 keywords 分为内置关键字和自定义关键字。

常用内置关键字:

  1. Set Variable If:  ${var2} Set Variable If condition value1 value2 ,给出一个条件和两个值,如果条件为true,则返回第一个值,否则返回第二个值;
  2. Should contain:  Should Contain ${result} value ,如果 result 不包括 value 一次或者多次,则测试失败;
  3. log: 记录给定信息;
  4. log to console: 将给定信息打印到控制台;
  5. set suite variable:  Set Suite Variable ${Scalar} ${Hello world} ,使变量在当前 suite 范围内都是可用的; 
  6. Run Keyword If:  Run Keyword If condition action arg ,如果 condition 为 true, 则使用给定的参数运行指定的关键字;

自定义关键字:

resource.txt*** Test Cases ***
First Case[Documentation]    this is a first case for resource[Tags]    ananCalculate and Check EqualsCalculate and Check Equals  expression=6+3    expected=${9}*** Keywords ***
Calculate and Check Equals[Arguments]    ${expression}=3+3    ${expected}=${6}${res}    Evaluate    ${expression}Log to console    expression=${expression}should be equal    ${res}    ${expected}

自定义关键字 Calculate and Check Equals,该关键字类似 python 的方法,有两个参数 expression 和 expected 默认值均为 6,如果输入参数不指定则用默认值。

 4.3  resource / Library

setting 表里使用 resource 导入文件,文件中包含了关键字的定义。

setting 表里使用 library 导入内置库和自定义库,库中定义了一系列方法。
 

*** Settings ***
Documentation    Example case for resource
Force Tags    owner
Resource    ./resource/resource.txt
Library    Selenium2Library
Library    Collections
Library    ./lib/robot.py

其中 robot.py 是自定义库。

4.4 自定义库

自定义库中定义了一系列关键字的方法。

robot.pyimport hashlibdef gen_sign(*args):m = hashlib.md5()m.update(''.join(args))return m.hexdigest()
def gen_sign_keywords(*args):m = hashlib.md5()m.update(''.join(args))
resource.txt*** Test Cases ***
First Case[Documentation]    this is a first case for resource[Tags]    ananCalculate and Check EqualsCalculate and Check Equals  expression=6+3    expected=${9}*** Keywords ***
Calculate and Check Equals[Arguments]    ${expression}=3+3    ${expected}=${6}${res}    Evaluate    ${expression}Log to console    expression=${expression}should be equal    ${res}    ${expected}${result}    gen_sign    @{list1}log to console   ${result}

4.5 setup & teardown

在 test case 执行前执行 Test Setup,执行后执行 Teardown 。

这样做,如果多个 test case 都需要执行 Test Setup 和 Teardown 时,可以将共同的部分放到 Suite Setup 和 Suite Teardown 中执行,这样只需要执行一次即可。
 

*** Settings ***
Suite Setup    Commen_Suite_Setup
Suite Teardown    Commen_Suite_Teardown
Documentation    Example case for resource
Force Tags    owner
Resource    ./resource/resource.txt
Library    Selenium2Library
Library    Collections
Library    ./lib/robot.py

robot framework 测试例子:

*** Settings ***
Suite Setup    Commen_Suite_Setup
Suite Teardown    Commen_Suite_Teardown
Documentation    Example case for resource
Force Tags    owner
Resource    ./resource/resource.txt
Library    Selenium2Library
Library    Collections
Library    ./lib/robot.py*** Test Cases ***First Case[Documentation]    this is a first case for resource[Tags]    ananCalculate and Check EqualsCalculate and Check Equals  expression=6+3    expected=${9}${result_first_case}    gen_sign    @{list1}Set Suite Variable    ${test_id}    ${result_first_case}Log to console    ${test_id}
Second Case[Documentation]    this is a second case for custom lib[Tags]    anan${sign}    gen_sign    @{list1}Log to console    ${sign}Log to console    ${test_id}
*** Settings ***
Documentation  this is a test demo case
Library    ./../lib/robot.py*** Variables ***
${var1}     value
@{list1}    a  b  c  d
&{dict1}    key1=sf     key2=${list1}
${INSTANTIATE_JSON_FILE}
${INSTANCEID}*** Keywords ***
Calculate and Check Equals[Arguments]    ${expression}=3+3    ${expected}=${6}${res}    Evaluate    ${expression}Log to console    expression=${expression}should be equal    ${res}    ${expected}${result}    gen_sign    @{list1}log to console   ${result}should contain    ${result}    clog to console    ${result}Commen_Suite_SetupCommon_Case_SetupCommon_Case_LogCommen_Suite_TeardownUndeploy_Case_SetupCommon_Case_SetupLog to console    ${var1}Common_Case_LogLog to console    huyun's test case
Undeploy_Case_SetupLog to console    undeploy case setup
import hashlibdef gen_sign(*args):m = hashlib.md5()m.update(''.join(args))return m.hexdigest()def gen_sign_keywords(*args):m = hashlib.md5()m.update(''.join(args))

5. Jenkins 自动化测试

 5.1 持续集成构建

持续集成构建步骤: 代码集成 -> 编译 -> 打包 -> 部署 -> 测试

代码集成: 分支管理,用到的工具有 SVN 或者 Git。

编译/打包: 用到的工具有 maven、IDE 等。

部署: 将软件安装到服务器或者客户端。

测试: daily build,持续集成构建, CI(Continuous integration) 版本。

5.2 自动化测试

自动化测试概念: 通过编写脚本用机器代替人工执行测试。

自动化测试流程:

  • 功能测试流程: 需求分析 - 测试计划 - 用例设计 - 测试执行 - 测试报告
  • 自动化测试流程: 测试用例选择 - 用例编码实现 - 测试执行 - 测试报告

5.3 自动化测试框架

自动化测试框架(Robot Framework):

自动化测试框架分为几种类型:

  • 关键字驱动框架: 将测试过程的操作方法抽象为关键字;
  • 数据驱动框架: 将测试中用到的数据在自动化测试过程中自动加载;
  • 混合型框架: 数据驱动、关键字驱动等多种技术融合的框架;

5.4 Jenkins 自动化测试

Jenkins是一个功能强大的应用程序,该程序允许持续集成和持续交付项目。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/137099.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Shiro 框架基本使用

文章目录 Shiro框架介绍Shiro 基本使用SimpleAccountRealmIniRealmJdbcRealmCustomRealm&#xff08;自定义Realm&#xff09; Shiro框架介绍 Apache Shiro是一个强大且易用的Java安全框架&#xff0c;它执行身份验证、授权、密码和会话管理。Shiro框架通过其三个核心组件&…

微服务是个坏主意吗?

曾几何时&#xff0c;我记得我的手指疯狂地敲打键盘&#xff0c;与庞大而杂乱的代码库搏斗。那是巨石的时代&#xff0c;代码就像古老的城堡一样&#xff0c;由一块块石头砌成一个令人印象深刻的庞然大物。 几年过去了&#xff0c;时代变了。开发人员口中的流行语变成了“微服…

Eclipse如何打开debug变量窗口

今天笔者在使用Eclipse调试的时候&#xff0c;发现没有变量&#xff08;Variables&#xff09;监视窗口&#xff0c;真是头痛得很&#xff0c;最后摸索出一套显示变量窗口的操作如下&#xff1a; 点击other&#xff0c;找到Variables并点击 最后调试代码&#xff0c;调试后如图…

【小知识送书2】从不了解用户画像,到用画像数据赋能业务看这一本书就够了丨《用户画像:平台构建与业务实践》

⭐简单说两句⭐ 作者&#xff1a;后端小知识 CSDN个人主页&#xff1a;后端小知识 &#x1f50e;GZH&#xff1a;后端小知识 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 简单说两句 &#x1f381;本次送书1~3本取决于阅读量&#xff0c;阅…

springboot整合aop,实现日志操作

前言&#xff1a; 整合之前&#xff0c;我们要明白aop是什么&#xff0c;为什么要用aop&#xff0c;aop能帮我们做什么。 答&#xff1a;AOP是面向切面编程&#xff08;Aspect-Oriented Programming&#xff09;的简称&#xff0c;它是一种编程思想&#xff0c;旨在在面向对象…

虹科方案 | LIN/CAN总线汽车零部件测试方案

文章目录 摘要一、汽车零部件测试的重要性&#xff1f;二、虹科的测试仿真工具如何在汽车零部件测试展露头角&#xff1f;三、应用场景**应用场景1&#xff1a;方向盘开关的功能测试****应用场景2&#xff1a;各类型电机的控制测试****应用场景3&#xff1a;RGB氛围灯的功能测试…

win系统环境搭建(六)——Windows安装nginx

windows环境搭建专栏&#x1f517;点击跳转 win系统环境搭建&#xff08;六&#xff09;——Windows安装nginx 本系列windows环境搭建开始讲解如何给win系统搭建环境&#xff0c;本人所用系统是腾讯云服务器的Windows Server 2022&#xff0c;你可以理解成就是你用的windows10…

建立表使用约束

1.建立表 二、使用约束 1.NOT NULL 非空约束&#xff0c;规定某个字段不能为空&#xff0c;NOT NULL 约束强制列不接受 NULL 值。 NOT NULL 约束强制字段始终包含值。这意味着&#xff0c;如果不向字段添加值&#xff0c;就无法插入新记录或者更新记录。下面的 SQL 强制表&qu…

最小二乘法的实现与线性回归的应用

1. 简介 简单线性回归中&#xff0c;您有一个因变量y和一个自变量X。该模型可以表示为&#xff1a; y m x b ymxb ymxb 其中 x x x: 自变量 y y y: 因变量 m m m: 斜率 b b b: 截距 最小二乘法是回归分析中用于估计线性回归模型参数的标准方法。它可以最小化误差的平方和&…

LVS+Haproxy

LVSHaproxy 一、Haproxy简介1.1、Haproxy应用分析1.2、Haproxy的特性1.3、常见负载均衡策略1.4、LVS、Haproxy、Nginx区别1.5、 Haproxy的优点1.6、常见的Web集群调度器 二、Haproxy部署实例四、日志定义优化 一、Haproxy简介 Haproxy 是一个使用C语言编写的自由及开放源代码软…

mysql odbc驱动安装

到官网下载对应版本的驱动包 可以选择对应版本&#xff0c;建议使用最新版本即可 查看powerDesigner对应的位数&#xff0c;位数对应不上的话&#xff0c;会找不到 powerDesigner 可以参考&#xff1a;powerDesigner安装 我这里装的是32位的 下载对应版本的即可 下载完成&a…

深入理解Kubernetes Pod调试

调试运行中的容器和Pod不像直接调试进程那么容易&#xff0c;本文介绍了通过临时容器共享命名空间的方式调试业务容器进程的方法。原文: Debugging Kubernetes Pods: Deep Dive ZanUnsplash 调试pod最简单的方法是在有问题的pod中执行命令&#xff0c;并尝试排除故障。这种方法…

软件定制开发的优势与步骤|APP搭建|小程序

软件定制开发的优势与步骤|APP搭建|小程序 定制开发的优势&#xff1a; 1. 满足特定需求&#xff1a;定制开发可以根据客户的实际需求进行设计和开发&#xff0c;使得软件系统能够更好地满足客户的业务目标。 2. 优化用户体验&#xff1a;通过深入了解客户的需求&#xff0c;定…

视频监控管理平台/视频汇聚/视频云存储EasyCVR安全检查的相关问题及解决方法3.0

智能视频监控系统/视频云存储/集中存储/视频汇聚平台EasyCVR具备视频融合汇聚能力&#xff0c;作为安防视频监控综合管理平台&#xff0c;它支持多协议接入、多格式视频流分发&#xff0c;视频监控综合管理平台EasyCVR支持海量视频汇聚管理&#xff0c;可应用在多样化的场景上&…

若依前端使用

初始化页面时&#xff0c;路由上加参数 1. 多个菜单对应一个页面&#xff0c;默认查询的数据状态不一样 vue 页面上 通过 debugger; 查看所有的参数&#xff0c; 最后取到了 2. Vue warn]: Error in callback for immediate watcher “fileList”: “TypeError: Cannot read p…

双系统ubuntu20.04(neotic版本)从0实现Gazebo仿真slam建图

双系统ubuntu20.04(neotic版本)从0实现Gazebo仿真slam建图 昨晚完成了ROS的多机通讯&#xff0c;还没来得及整理相关操作步骤&#xff0c;在进行实际小车的实验之前&#xff0c;还是先打算在仿真环境中进行测试&#xff0c;熟悉相关的操作步骤&#xff0c;计划通过虚拟机&…

【深度学习】 Python 和 NumPy 系列教程(九):NumPy详解:1、创建数组的n种方式

目录 一、前言 二、实验环境 三、NumPy 0. 多维数组对象&#xff08;ndarray&#xff09; a. 多维数组的属性 1. 创建数组 a. 使用numpy.array函数&#xff1a; b. 使用numpy.zeros函数 c. 使用numpy.ones函数 d. 使用numpy.arange函数 e. 使用numpy.linspace函数 …

2023Q2全球可穿戴腕带出货量达 4400 万台

全球可穿戴设备市场在2023年第二季度继续保持增长态势&#xff0c;总出货量达到了4400万台&#xff0c;同比增长了6%。这一增长得益于消费者对于可穿戴设备的需求不断增加&#xff0c;以及不同细分市场的需求反弹。 根据市场研究机构 Canalys 的最新报告&#xff0c;全球可穿戴…

Android EditText筛选+选择功能开发

在日常开发中经常会遇到这种需求&#xff0c;EditText既需要可以筛选&#xff0c;又可以点击选择。这里筛选功能用的是AutoCompleteTextView&#xff0c;选择功能使用的是第三方库https://github.com/kongzue/DialogX。 Android AutoCompleteTextView(自动完成文本框)的基本使用…

【物联网】简要解释RTK(Real-Time Kinematic)>>实时动态差分定位

引言&#xff1a; RTK&#xff08;Real-Time Kinematic&#xff09;技术是一种基于差分GPS的高精度定位技术&#xff0c;它通过实时通信和数据处理&#xff0c;能够提供厘米级甚至亚米级的定位精度。RTK技术在许多领域都得到了广泛应用&#xff0c;如测绘、航空航天、农业等。本…