Robot Framework完整流程学习--分层思想

2023-11-11

一.环境搭建
网上有很多的教程,这里就不多讲了
 
二.RIDE的界面认识
 
这里只介绍几个重要常用的功能,其他相信自己都能理解
 
1.Search Keywords(F5): 搜索关键字

2.Content Assistance:内容助手

Robot <wbr>Framework完整流程学习系列一

 

 

 

3.View RIDE Log:查看RIDE日志,使用过程中报错,可以来这里查看,寻找报错原因
 
三.最基本的流程
 
1.New Project
 
Type选择Directory,Format选择TXT
2.New Suite
 
在Project的基础上Create New Suite,Type选择File,Format选择TXT
3.New TestCase
 
在Suite的基础上Create New TestCase
4.New Resource
 
在Project的基础上Create New Resource
Robot <wbr>Framework完整流程学习系列一

5.New User Keyword
 
在Resource的基础上Create User Keyword
这时候你的RIDE如下图显示就对了
Robot <wbr>Framework完整流程学习系列一


四.工作区EDIT
 
1.测试套件
Robot <wbr>Framework完整流程学习系列一

大体分成3个部分。

(1):加载外部文件

Add Library      :加载测试库,主要是[PYTHON目录]\Lib\site-packages里的测试库

Add Resource:加载资源,主要是你工程相关的资源文件

Add Variables:加载变量文件,不怎么用,可暂时忽略

(2):定义内部变量

Add Scalar:定义变量

Add List:定义列表型变量

(3):元数据定义

Add Metadata:定义元数据。我是直接翻译的,这个是新增加的部分,大概看了一下作用是在report和log里显示定义好的内容,格式和document一样。

 

2.添加Resource(在Suite中

Robot <wbr>Framework完整流程学习系列一

 

3.添加Library(在Suite中

Robot <wbr>Framework完整流程学习系列一

4.添加成功的标志,在Source中出现Selenium2Library和res1

Robot <wbr>Framework完整流程学习系列一

 

5.setting(包括Project,Suit,Case,Resource,User Keywords图片就不一一上传了)

Robot <wbr>Framework完整流程学习系列一

Documentation:文档,每一项都有。可以给当前的对象加入文档说明。

Suite Setup指的是测试套件启动的时候就执行某个关键字。(例:我在Suite Setup设置了Sleep | 5sec,表示等待5秒,要注意关键字的参数要使用 | 分隔)

Test Teardown指的就是案例结束的时候执行某个关键字。

Test Template:测试模版,这是可以指定某个关键字为这个测试套件下所有TestCase的模版,这样所有的TestCase就只需要设置这个关键字的传入参数即可。

Test Timeout:设置每一个测试案例的超时时间,只要超过这个时间就会失败,并停止案例运行。这是防止某些情况导致案例一直卡住不动,也不停止也不失败。

Force Tags:这里还是要说一下,在文件型Suite这里还可以继续给子元素增加Force Tags,但是他不能删除父元素设置的tags

Default Tags:默认标记,其实和Force Tags没啥区别的

Arguments:传入参数

Return Value:返回值

 

五.工作区RUN

 

Robot <wbr>Framework完整流程学习系列一

 Execution Profile:选择运行方式,里面有pybot、jybot和custom script。其中我们默认是用pybot来运行案例,jybot需要安装Jython的支持。custom script是选择自定义的脚本来运行。就目前而言,我们不用修改了,默认pybot即可

 Start和Stop:这两个应该不用说了,运行和停止案例。

 Report和Log: 报告和日志,要运行之后才能点击。他们的区别么,我的感觉是报告更多是结果上的展示,日志更多是过程的记录,更多使用的还是日志。

 Autosave: 自动保存,如果不勾选,在修改了案例之后如果没有保存的话,运行案例时会提示是否保存。勾选则在运行时自动保存了。

 Arguments: pybot的参数(或者jybot等),比如我后面截图里加上了一个参数。完整版的参数可以在doc命令行输入pybot.bat --help

Only Run Tests with these Tags: 只运行这些标记的测试案例。

Skip Tests with these Tags: 跳过这些标记的测试案例

 

六.案例设计之流程与数据分离1 

 

 1.创建案例

Robot <wbr>Framework完整流程学习系列一

 

这算是一个比较完整的案例了,包含完整的流程和检查点,那么这时候如果我要增加一个案例,搜索另外的内容怎么办呢?

在原来的case上修改肯定是不合适的,毕竟那个案例可能还是需要保留的。

最简单的办法,把这个case复制一个,修改搜索内容。那么我们复制出一个case2吧

 

Robot <wbr>Framework完整流程学习系列一

2.分层方法

选中case中的所有脚本,点击右键,选择Extract Keyword

Robot <wbr>Framework完整流程学习系列一

而我们再看case的内容就只有这个关键字了

Robot <wbr>Framework完整流程学习系列一

新建一个Resource文件,把UserKeyword移动过去(或者移动到已有的Resource文件里)

这样做的目的是为了更清晰,在测试套件中一般不放置UserKeyword,前面第2讲的时候我们就说过了,首要建议UserKeyword放在Resource里。

我这里新建一个Resource,叫TestFlow.txt,然后把这个搜索测试移动过去,就成了这样。

 

接下来我们针对这个测试流程进行分离,因为这个案例流程比较简单,实际上就只有搜索内容这一个值是变化的,因此我们把他改成一个变量,同时把这个UserKeyword的参数加上这个变量。

Robot <wbr>Framework完整流程学习系列一

再回头看看case的内容和添加内容

Robot <wbr>Framework完整流程学习系列一
可以运行试试看

到现在我们完成了一个简单的分层,把搜索测试这个流程剥离成一个关键字,然后在不同的case调用这个关键字,然后传递不同的参数,用以进行不同数据在同一个流程下的测试。

这样就不用担心再新增10个或100个案例了,因为这个案例比较简单,通过复制也可以做出10个或100个案例,但是最大的区别在于,如果我的流程中间需要做一点小的调整和优化,对于流程和数据分离的案例来说,我这样维护一下搜索测试这个UserKeyword就行了;对于复制的案例,那你就要辛苦了,你有多少个案例就改多少吧。

其实这个道理引申出来,我们做自动化测试也是一样,选择不同的方法或者工具都可以实现最终的目标,但是我们需要考虑的不是把案例做起来,因为这个比较容易实现。对于自动化案例来说,最大的难度不是在于怎么做案例,而是怎么维护案例。因为随着需求的更新,系统的流程或者页面会发生很多的变化,这时候的维护成本的高低才是我们首要考虑的,如果自动化案例建立起来之后,没有后续维护的投入,最终经过若干个版本,这些自动化案例基本就是废弃的了。

 

 

七.案例设计之流程与数据分离1

 

将搜索测试中的内容继续分层,还是要把一些底层的代码级关键字继续拆分出来

下面对res1.txt进行操作

 

1.打开浏览器

Robot <wbr>Framework完整流程学习系列一


 2.输入搜索内容

Robot <wbr>Framework完整流程学习系列一

3.点击搜索

Robot <wbr>Framework完整流程学习系列一

4.校验标题

Robot <wbr>Framework完整流程学习系列一

5.关闭浏览器

Robot <wbr>Framework完整流程学习系列一

 

接着我们把对应的搜索测试中的代码都换成相应的关键字,记得添加参数${url}


Robot <wbr>Framework完整流程学习系列一

最后该运行了

Robot <wbr>Framework完整流程学习系列一

至此,我们这个案例就已经完成分层了,因为案例比较简单,所以只分了3层,分别是案例层,流程层,元素层。他们的调用关系也是逐层深入的

Robot <wbr>Framework完整流程学习系列一

=============总结一下=============

这样做的好处不单是为了以后维护方便,也使得案例的架构层级清晰。越是靠近上层的部分,脚本越贴近自然语言,或者说很像我们的测试案例;越靠近下层的部分,越是接近页面元素的代码级部分。这样以后如果发生维护的时候,根据需要维护的内容,只需要在很少的地方进行调整即可。比如一个元素的id变了,那我只要在elements里面更新就行了。比如测试的流程调整了,以前是ABC的页面顺序,现在是ACB的页面顺序,那么只要在testflow层进行调整即可。

那么回到我们的标题,流程与数据分离,实际上目前我们的流程都集中在testflow以及下面的部分,而数据一般都是在案例层去给流程层传递,这就是我们的流程与数据分离了。当然,我们还可以再进一步的分离,把数据放到外面,脱离我们的案例,在运行的时候才传递进行,也是可以实现的。后面我会做个简单的例子给大家看。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Robot Framework完整流程学习--分层思想 的相关文章

  • qt使用自定义属性方法让子控件动态改变qss样式

    用动态改变QLabel样式为例 分为QLabel选择状态和未选择状态 1 自定义类继承自QLabel 用Q PROPERTY宏注册一个名称为select属性 2 QSS文件中预先设置QLabel属性 QLabel label2 select
  • 腾讯云coding平台平台inda目录遍历漏洞复现

    前言 其实就是一个python的库可以遍历到 并不能遍历到别的路径下 后续可利用性不大 并且目前这个平台私有部署量不多 大多都是用腾讯云在线部署的 CODING DevOps 是面向软件研发团队的一站式研发协作管理平台 提供从需求到设计 开
  • springmvc控制器的三种实现方式

    方式一 实现Controller接口 public class Test01 implements Controller Override public ModelAndView handleRequest HttpServletReque
  • vue实现element-ui自定义主题色切换(简单版)

    需求 通过点击图标实现了白天和黑夜的页面效果的实现 可以自定义颜色 手写 比较简单 如果需要复杂功能 根据颜色选择器实现element ui全部的主题色切换可以看我另一篇 还在写 效果 1 定义个图标用于切换主题 div div
  • Element el-table-column宽度设置百分比无效

    问题 使用Element table组件时 给列设置百分比宽度无效 width 30 解决 用属性min width 3 代替属性width 30 且每一列都必须设置 原因 el table 组件会被 vue 解析成 html width
  • android wifimanager实时scan,天博体育和BOB为什么不封 -官网

    内容管理 bin bash 挂载yum仓库 read p 请输入你yum仓库的挂载点 direcho 正在挂载光盘 mount grep q dev sr0 umount dev sr0 d dir mkdir dirmount dev s
  • 怎么把桌面添加到计算机的收藏夹,电脑浏览器怎么把书签添加到桌面

    把个人喜欢的网页保存到桌面 下次直接进入网页就十分便捷了 以下就是网页保存到桌面的几种方法 方法一 1 打开360浏览器 选择文件选项 2 保存网页桌面快捷方式 3 等待生成桌面快捷方式 4 生成了桌面快捷方式 直接打开就可以进入经常使用的
  • IDEA在使用maven命令时,控制台出现中文乱码的解决方式

    今天在进行maven打包的时候 由于项目路径有中文名称 然后控制台出现了中文乱码 如图所示 这种情况下 本狗试过很多种方法 比如在setting gt encoding中设置字符集为UTF 8等等方法 但是都没有用 后来经过大量百度 找到了
  • Secret File ctf web php伪协议

    Secret File php伪协议 打开网页并没有太多提示 查看一下网页源码 可以看到一个新的页面 Archive room php 尝试访问一下 这是就跳出了这样一个页面 点击SECRET 出现如下页面 比较之前的网页源码并没有什么变化
  • 成功解决:RuntimeError: DataLoader worker (pid(s) XXX) exited unexpectedly

    跑着跑着出现Bug RuntimeError DataLoader worker pid s x x x x exited unexpectedly 加上 if name main
  • 【数模】基于PageRank算法的学术论文重要性排序问题(matlab实现)

    基于PageRank算法的学术论文排序问题 matlab实现 问题描述 六篇学术论文的引用关系如图 A 指向 B 表示 A 引用 B 试排出它们重要性的顺序 问题分析 就是给节点来个重要性排序 PageRank简介 PageRank 又称网
  • oracle表空间迁移transport_tablespace的使用

    问题描述 如果某个表空间有多个用户 那么我们在迁移的时候如果按用户导出导入的话 那将是一个麻烦费事的活 这个时候我们可以通过transport tablespace参数进行表空间迁移 达到一次性迁移整个表空间的目的 下面通过一个实验来讲解整
  • layui table 跨页、翻页记忆选择

    示例 table class layui table table layui 需要初始化的 form layui form layfilter layui layfilter table render
  • linux du命令

    百度百科查到 du show disk usage 查看磁盘使用情况 个人用的比较多的命令是 du h max depth 1 查看这个目录下的文件目录大小 du ah max depth 1查看这个目录下的文件目录包括文件的大小 具体的命
  • 项目经验分享:基于昇思MindSpore实现手写汉字识别

    项目信息Program Info 项目要求 基于MindSpore的实现在线手写汉字识别 主要包括手写汉字检测和手写汉字识别 能较准确的对标准字体的手写文字进行识别 识别后通过人工干预对文本进行适当修正 需要有一定的创新特性 代码达到合入社
  • Android开发学习【Button控件】

    Android开发学习 Day02 Button 与TextView相比 Button增加了两个新属性 书写一个点击显示当前时间的按钮 获取当前时间的java类 xml主界面 MainActivity类 点击事件和长按事件 使用setOnC
  • C++中的头文件.h 和 源文件.cpp 的关系

    在VS中 C 项目 我创建了一个类 会自动创建头文件和源文件 这两个文件有什么关系 如何快速切换 在头文件 h文件中声明的类方法 如何快速在源文件中进行具体实现 在 Visual Studio 中创建 C 项目时 当你添加一个新的类 它会自
  • 游戏外挂内存数据读取

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 源地址 http hi baidu com probill blog item 1d07d11efbd641f01ad576f3 html网络游戏 每一个数据比如你的血值
  • vue 父子间通信 总结

    vue 父子间通信 总结 组件之间通信 父组件向子组件传值 父传子 props 父组件 子组件 实现的效果图 父组件输入密码 子组件接收数据 子组件向父组件传值 子传父 emit eventName args 子组件 父组件 兄弟组件之间的
  • Qt学习笔记(五)【多窗口交互方法】

    在开发应用程序的过程中 难免会遇到多个进行交互的问题 Qt中多窗口交互有多种方式 方法一 利用主窗口指针的方式进行交互 在主窗口中创建子窗口时 会将this指针传递进去 则子窗口就会将主窗口作为父窗口 因此在子窗口中可以通过如下代码获取到主

随机推荐

  • 青海省招标投标投诉处理办法

    http baike baidu com view 12098489 htm
  • 图像均值、标准差、变异系数的意义

    目录 均值图像如何算 方差图像如何计算 变异系数是什么 极差 最大值 最小值 方差 数列中每个元素与均值之差的平方和 标准差 方差的开平方根 变异系数 正态分布 标准差 平均值 数字图像处理的配套视频教程 1 冈萨雷斯 数字图像处理 开始安
  • jquery vue 替代_关于jQuery和Vue两者技术架构的比较分析报告

    关于jQuery和Vue两者技术架构的比较分析报告 jQuery jQuery已经过时了 略做点补充 Zepto也是过时货了 还有Underscore Lodash等 也是过时了 但是过时不代表你就一定不可以再用 或者要从现有项目中清除抛弃
  • Vue路由守卫

    路由守卫的作用 对路由进行权限控制 分类 全局守卫 独享守卫 组件内守卫 1 全局守卫 全局前置路由守卫 初始化和每次路由切换时调用 router beforeEach to from next gt console log 前置路由守卫
  • vue在父组件如何获取子组件的ref

    步骤 1 给父组件定义一个ref 2 子组件也是一样的ref 父组件 div div
  • 【规划】RRT Planer 以及 python实现

    本文转载自头条号作者半杯茶的小酒杯 百度的研发工程师 文章多是自动驾驶相关 推介给大家 RRT Planer 快速搜索随机树 RRT Rapidly ExploringRandom Trees 是一种常见的用于机器人路径规划的方法 他的原始
  • Qt中的JSON操作

    JSON JavaScript Object Notation js对象标记 是一种轻量级的数据交换格式 它基于ECMAScript的一个子集 使用完全独立于编程语言的文本格式来存储和表示数据 简洁和清晰的的层次结构使得JSON成为理想的数
  • ScaleTable matlab,【转】用matlab跑一下下面的程序,带上耳机,你会有发现一些惊喜噢...

    Cripple Pachebel s Canon on Matlab Have fun fs 44100 sample rate dt 1 fs T16 0 125 t16 0 dt T16 temp k size t16 t4 linsp
  • mysql导出binLog日志

    安装 https blog csdn net weixin 43423484 article details 124408565 设置 mysqld 设置3306端口 port 3306 设置mysql的安装目录 这里输入你安装的文件路径
  • 缺少项目经验 & 找工作处处碰壁?这 240 个实战项目请打包带走!

    全部面试找工作时 最常被问到的问题就是 有什么项目经验 对于毕业生来说 我们刚走出校园 还没有工作和项目经验 只能拿学校里练习做的 小游戏 或者 命令行程序 出来 但是 这些项目并不符合现代编程的需要 现代编程需要 前后端分工合作 网络接入
  • 云直播SDK核心功能对比|腾讯云、阿里云、声网、即构等SDK厂商对比

    直播业务概述 大家所熟知的直播平台虎牙 斗鱼 快手 抖音 B站 直播功能看似普遍 但从零到一开发却不简单 直播中运用到的技术难点非常之多 音频视频处理 编解码 前后处理 直播分发 即时通讯等技术 学好任何一项都需要比较高的成本 将它们融合到
  • QT从入门到实战x篇_14_消息对话框(QMessageBox、静态成员函数的访问、修改按键、利用函数返回值为枚举判断按键类型,实现指定动作)

    接上篇 QT从入门到实战x篇 xx 模态和非模态对话框创建 对话框建立在栈上运行完即释放 堆上不删除不可释放 对象在栈上及堆上的生命周期问题需弄懂 在帮助文档中 搜索QMessageBox 会看到其比较重要的几个函数如下 对应的为静态成员函
  • npm start 作用

    在配置phonecat项目时需要运行npm start在本地配置一个服务器环境 npm start首先会安装一系列的必要程序 这些程序依赖package json中的内容 package json中的内容详解如下 依赖包介绍 在克隆项目之后
  • 【Android开发】toast提示

    什么是Toast 在屏幕下方浮现出一个窗口 显示一段时间后又消失 这个可视化组件叫做 Toast 它主要用于提示用户某种事件发生了 如何在添加Toast 最关键的是在事件处理逻辑中加两条语句 定义一个Toast 用makeText 设置要浮
  • 饥荒暴食模式服务器无响应,饥荒暴食模式无银盘图文攻略介绍

    饥荒暴食模式无银盘图文攻略介绍 2018 06 26 17 03 50来源 游戏下载编辑 苦力趴评论 0 饥荒 近日推出了新的游戏模式暴食模式 玩家可以选择单人通关亦或是组队一同任务 下面就为大家带来饥荒暴食模式无银盘图文攻略介绍 基本思路
  • 数据库之数据库设计和E-R模型

    本篇文章介绍数据库设计和E R模型 内容基本是笔者在学习 数据库系统概念 时摘抄总结而来 仅作笔记 实体 联系模型 实体 联系 entity relationship E R 数据模型的提出旨在方便数据库的设计 它是通过允许定义代表数据库全
  • related work

    Traditional approaches e g genetic algorithm GA 2 and ant colony optimization ACO 3 can obtain optimal mapping results b
  • mysql查询练习(三)

    31 查询成绩比该课程平均成绩低的同学的成绩表 mysql gt select from score a where degree lt select avg degree from score b where a cno b cno sn
  • 查看linux系统版本命令

    一 查看内核版本命令 1 root SOR SYS cat proc version Linux version 2 6 18 238 el5 mockbuild x86 012 build bos redhat com gcc versi
  • Robot Framework完整流程学习--分层思想

    一 环境搭建 网上有很多的教程 这里就不多讲了 二 RIDE的界面认识 这里只介绍几个重要常用的功能 其他相信自己都能理解 1 Search Keywords F5 搜索关键字 2 Content Assistance 内容助手 3 Vie