Robot Framework自定义测试库的作用域的理解

2023-05-16

  robot framework中,强大的测试库api支持,用户可根据实际需求定义测试库,导入后可使用自定义库中相应的关键字。

  当自定义的测试库是类库,则需要考虑一个问题:类实例。用类实现的库可以有内部状态, 这些状态可以被关键字或构造函数修改. 因为这些状态会影响到关键字实际的行为, 所以, 保证一个测试用例不会意外地影响到另一个用例显得非常重要. 这种依赖行为有可能造成非常难定位的bug。例如, 添加了新的测试用例, 而这些用例使用库的方式并不一致。

  Robot Framework 为了保证测试用例之间的独立性, 默认情况下, 它为每个测试用例创建新的测试库实例. 然而, 这种方式不总是我们想要的, 比如有时测试用例需要共享某个状态的时候. 此外, 那些无状态的库显然也不需要每次都创建新实例。实例化测试库类的方式可以通过属性ROBOT_LIBRARY_SCOPE定义的三个作用域来控制

  1.TEST CASE:为每个测试用例创建测试库实例,用例间相互独立,此为默认情况;

  创建测试库类:GTest.py


 1 class GTest(object):
 2 
 3     ROBOT_LIBRARY_SCOPE = "TEST CASE"
 4     counter = 0
 5 
 6     def __init__(self):
 7         GTest.counter += 1
 8 
 9     def count(self):
10         return self.counter, id(self)  
View Code

   创建测试套件login.robot:


 1 *** Settings ***
 2 Documentation     Suite description
 3 Library           GTest.py
 4 
 5 *** Test Cases ***
 6 Test title
 7     [Tags]    DEBUG
 8     @{res}   count
 9     log many    @{res}
10 
11 Test title2
12     [Tags]      DEBUG
13     @{res}   count
14     log many    @{res}  
View Code

 从用例的执行结果来看,每个使用GTest库的测试用例运行时,counter值加1,且实例id各不相同,所以SCOPE为"TEST CASE"的测试库会为每个测试用例创建实例,这种配置更适用于严格控制用例间相互影响的场景;

  2.TEST SUITE:为每个测试套件创建测试库实例,该测试套件内的所有用例共享这个库实例

  修改测试库类GTest.py, 将ROBOT_LIBRARY_SCOPE值替换为"TEST SUITE"


 1 class GTest(object):
 2 
 3     ROBOT_LIBRARY_SCOPE = "TEST SUITE"
 4     counter = 0
 5 
 6     def __init__(self):
 7         GTest.counter += 1
 8 
 9     def count(self):
10         return self.counter, id(self)  
View Code

  新增测试套件login2.robot


 1 *** Settings ***
 2 Documentation     Suite description
 3 Library           GTest.py
 4 
 5 *** Test Cases ***
 6 Test title
 7     [Tags]    DEBUG
 8     @{res}   count
 9     log many    @{res}
10 
11 Test title2
12     [Tags]      DEBUG
13     @{res}   count
14     log many    @{res}  
View Code

  运行测试套件login.robot和login2.robot

 

 

 

 

 从以上测试结果来看,图1中,同一测试套件内所有测试用例获取到的GTest实例相同;图2中,不同测试套件获取到的GTest实例不同,因此SCOPE设置为"TEST SUITE"时,会为每个测试套件创建一个测试库实例;

  3.GLOBAL:整个测试过程中只创建一个测试库实例,所有测试套件、测试用例共享同一个测试库实例

  修改测试库GTest.py,将ROBOT_LIBRARY_SCOPE修改为"GLOBAL"


 1 class GTest(object):
 2 
 3     ROBOT_LIBRARY_SCOPE = "GLOBAL"
 4     counter = 0
 5 
 6     def __init__(self):
 7         GTest.counter += 1
 8 
 9     def count(self):
10         return self.counter, id(self)  
View Code

  运行测试套件login.robot和login2.robot

 

 

 从用例运行结果来看,测试套件login.robot和login2.robot所用GTest的同一个实例,且只有一个。因此SCOPE设置为"GLOBAL"后,整个测试过程中只生成一个测试库实例。所有套件、测试用例共享这个测试库实例;

  robot官网中说明,如果同一个测试库被多次以不同参数导入,则不管ROBOT_LIBRARY_SCOPE是否定义,每个测试套件会创建一个新的实例

  创建测试库GTest.py,  ROBOT_LIBRARY_SCOPE定义为"GLOBAL"


 1 class GTest(object):
 2 
 3     ROBOT_LIBRARY_SCOPE = "GLOBAL"
 4     counter = 0
 5 
 6     def __init__(self, *args):
 7         self.args = args
 8         GTest.counter += 1
 9 
10     def count(self):
11         return self.counter, id(self)  
View Code

  创建测试套件login.robot


 1 *** Settings ***
 2 Documentation     Suite description
 3 Library           GTest.py      suite1      login1
 4 
 5 *** Test Cases ***
 6 Test title
 7     [Tags]    DEBUG
 8     @{res}   count
 9     log many    @{res}
10 
11 Test title2
12     [Tags]      DEBUG
13     @{res}   count
14     log many    @{res}  
View Code

  创建测试套件login2.robot


 1 *** Settings ***
 2 Documentation     Suite description
 3 Library           GTest.py      login2      suite2
 4 
 5 *** Test Cases ***
 6 Test title
 7     [Tags]    DEBUG
 8     @{res}   count
 9     log many    @{res}
10 
11 Test title2
12     [Tags]      DEBUG
13     @{res}   count
14     log many    @{res}  
View Code

 

从测试用例运行结果来看,虽然将作用域定义成了全局的,但是由于在不同测试套件中以不同参数导入,所以用例执行过程中为不同的测试套件生成了不同的实例。

转载于:https://www.cnblogs.com/blackeyes1023/p/11613463.html

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

Robot Framework自定义测试库的作用域的理解 的相关文章

  • ORACLE表、索引和分区

    ORACLE 表 索引和分区 一 数据库表 每种类型的表都有不同的特性 xff0c 分别应用与不同的领域 堆组织表 聚簇表 共三种 索引组织表 嵌套表 临时表 外部表和对象表 1 行迁移 建表过程中可以指定以下两个参数 xff1a PCTF

随机推荐

  • ffmpeg常用命令

    之前在处理监控视频时要对视频进行抽帧压缩 xff0c 使得视频大小限制在10M左右 xff0c 所以使用ffmpeg进行视频加工处理 xff0c 因为这个工具确实很强大 下面是用到的相关命令 xff0c 可以直接跳到最后一条命令 xff0c
  • 去哪儿网2015校招研发类笔试题

    从网上找到的题目 xff0c 自己做了一遍 1 二分查找 2 给定一个字符串 xff0c 得到这个字符串中首先出现两次的那个字符 方法 xff1a 可以用一个hash map或者数组来存储字符出现的次数 xff0c 一旦有一个出现了2次 x
  • WebGL学习笔记(4)

    本篇笔记加强了上篇笔记示例代码的程序 xff0c 实现了使用nodejs websocket来广播每个玩家的坐标数据并在同一个世界模型中进行多人在线交互 websocket服务端 xff1a 安装nodejs与npm xff0c 创建一个服
  • SPSS超详细操作:分层回归(hierarchical multiple regression)

    SPSS超详细操作 xff1a 分层回归 hierarchical multiple regression 1 问题与数据 最大携氧能力 maximal aerobic capacity VO2max 是评价人体健康的关键指标 xff0c
  • 6种自动化测试框架(总有一款适合你)

    不知不觉 xff0c 分享的框架已经6个了 xff08 准确说应该是4个 xff09 xff0c 仅仅是接口的 这些框架都是最基础的框架 xff0c 需要根据实际使用场景进行完善 xff0c 大家就当练手实践吧 不需要写代码的自动化框架 J
  • Selenium爬取元素下子元素方法

    Selenium提供了一下方法来定义一个页面中的元素 xff1a find element by id find element by name find element by xpath find element by link text
  • js promise中如何取到[[PromiseValue]]

    返回的值 br Promise span class hljs string PromiseStatus span class hljs string 34 resolved 34 span class hljs string Promis
  • 对比kali linux 的gnome 版本 和 xfce版本 哪个更适合荣耀magicbook锐龙版

    先说明2个点 xff1a 1 我个人使用的是荣耀magicbook锐龙版的第一代就是2018年发布的那款 xff0c BIOS版本是目前最新版1 22 额外说下magicbook这bios界面真心无力吐槽 xff0c 但还好功能基本够用 2
  • 趣味离散数学题(巧猜围棋子)

    甲手里有一个围棋子 xff0c 要乙来猜棋子的颜色是白的还是黑的 xff0e 条件是 xff1a 只允许乙问一个只能回答 是 或 否 的问题 xff0c 但甲可以说真话 xff0c 也可以说假话 xff0e 问乙可以向甲提出一个什么问题 x
  • ubuntu terminal 介绍及相关命令

    ubuntu的terminal 1 调出方法 windows键 43 T 2 终端显示内容 3 查看当前所在目录的绝对路径 pwd命令 eg1 xff1a eg2 xff1a linux严格区分大小写 4 更改 进入目录 cd命令 xff0
  • 激活Debian 7 的桌面(把图标放在桌面上)

    转 xff1a http www acyoo com archives 3017 html Debian 7的默认桌面是Gnome 3 刚装好时无法在桌面进行任何操作 xff0c 不过只需要设置一下就可以了 xff1a 左上角的Activi
  • safari浏览器打不开该网页,提示无法连接服务器如何处理

    现在一些科技类型大公司 xff0c 都自主研发APP 浏览器等 xff0c 像阿里巴巴的UC浏览器 xff0c 腾讯的QQ浏览器 xff0c 苹果公司的safari浏览器等 xff0c 最近 xff0c 苹果用户的小伙伴提到safari浏览
  • EFCore自动迁移

    2019 05 14 xff0c EFCore 2 2 4 有两种方式 xff1a 1 使用Migrate 方法 code if DbContext Database GetPendingMigrations Any DbContext D
  • ffmpeg失败 python_由于ffmpeg不可用,matplotlib动画艺术动画失败ab

    我正在打电话matplotlib animation ArtistAnimation从一系列png图像制作动画 xff0c 但是我得到了一个连接到ffmpeg的错误 我在我的ubuntu14 04上安装了Anaconda 我得到的错误消息是
  • Ubuntu18.06 Mate桌面环境下VirtuslBox打开虚拟机“全局菜单”异常退出解决办法

    在安装完Ubuntu18 06 Mate桌面环境后在VirtuslBox里打开虚拟机会出现 全局菜单 异常退出问题 产生上面问题的原因是你的虚拟机可能在 显示 61 gt 屏幕 61 gt 硬件加速里勾选了 61 gt 启用3D加速 xff
  • SQL Server on Ubuntu——Ubuntu上的SQL Server(全截图)

    本文从零开始一步一步介绍如何在Ubuntu上搭建SQL Server 2017 xff0c 包括安装系统 安装SQL等相关步骤和方法 xff08 仅供测试学习之用 xff0c 基础篇 xff09 一 xff0e 创建Ubuntu系统 xff
  • 增量式编码器计数的过零点处理问题

    在增量式编码器位置计数过程中 xff0c 每经过一个计数溢出 xff0c 根据运转方向 xff0c 在update中断里我们会对圈数加1或者减1 if TIMx gt SR amp TIM FLAG Update 61 61 TIM FLA
  • PHP处理base64编码字符串

    接收前端传过来的base64编码后的字符串 如果是json字符串 那么PHP使用file get contents 39 php input 39 来接收 本次这里是以post传参的形式传base64字符串 photo 61 Yii app
  • PHP解决h5页面跨域

    前端h5 页面请求后端接口会出现跨域 PHP 只需三行代码即可解决 解决前端跨域 h5页面 header 34 Access Control Allow Origin 34 允许访问的来源域名 header 39 Access Contro
  • Robot Framework自定义测试库的作用域的理解

    robot framework中 xff0c 强大的测试库api支持 xff0c 用户可根据实际需求定义测试库 xff0c 导入后可使用自定义库中相应的关键字 当自定义的测试库是类库 xff0c 则需要考虑一个问题 xff1a 类实例 用类