Robot Framework(12)- 详细解读 RF 的变量和常量
如果你还想从头学起Robot Framework,可以看看这个系列的文章哦!
https://www.cnblogs.com/poloyy/category/1770899.html
常量的栗子
常量就不多说了吧,大家都懂!直接看栗子

上面 log 关键字后面跟的参数都是常量,且类型均是字符串【RF 里面,常量默认是字符串类型,如果需要整形、浮点数、列表,需要调用关键字来转换 or 生成】
变量的介绍
- RF中的变量,实质上就是一个Python变量,它指向一个Python对象
- 所以RF变量对应的是什么Python对象,它就是什么类型的对象
变量标识符
{变量名}
{} 就是变量标识符
RF 的变量类型
| 变量类型 | 变量中文 | 写法 |
| scalar | 标量 | ${SCALAR} |
| list | 列表 | @{LIST} |
| dict | 字典 | &{DICT} |
| 环境变量 | 环境变量 | %{ENV_VAR} |
变量的作用就不说了哈,大家应该都知道~
变量的注意事项
- 不区分大小写: ${var} 和 ${VAR} 指向同一个对象
- 变量名若有下划线和空格都会被忽略: ${my var} 或 ${myVar}
测试代码

测试结果

Scalar 变量
特点
- 当传递 Scalar 变量给关键字作为参数的时候, 就是直接把它所对应的 Python 对象类型传递给关键字对应的函数
- 每个 List 变量和 Dict 变量,也是 Scalar 变量
测试代码

测试结果

知识点
- 在 Variables 表中定义变量,可以直接在变量后面跟值,不用加 set variable
- 给标量赋值,声明变量后面可加=,也可不加
- 在 Test Cases 表中定义变量,声明变量之后,一定要接 set variable 或 set variable if 关键字,然后再接需要设置的值
- 变量间,可以互相赋值
List 变量
List 变量的介绍
如果一个标量的值是一个列表,或者类似列表的其它序列,可以将该变量作为列表变量使用,格式为 @{EXAMPLE}
Test Case 表中定义列表变量的栗子

测试结果

测试代码分成了四部分
- 声明列表变量,有两种声明列表变量的方式,以及两种生成列表值的方式
- 打印列表
- 循环打印
- 获取列表长度
我们来看看上述 RF 代码等价于 Python 的话,会是咋样的

@{lists} 和 ${lists} 的区别
- 列表变量也是标量的一种,只是值是列表,所以可以看成列表变量
- ${lists} 可以看成是一个列表整体, @{lists} 可以看成整体拆成一个个单独的元素
- ${lists} 在 Python 里面就是一个 list ,然后 @{lists} 就是展开其 lists 中的每个元素,作为多个参数传入,和 *args 一样效果,在Python 里叫可变参数【可看这篇博文:https://www.cnblogs.com/poloyy/p/12526592.html】
我们将它们等价到Python 里面去看,这样更好理解
def printarg(*args):
if len(args) == 0:
print('** no args **')
else:
print('** args are **')
print('-----------------')
for one in args:
print(repr(one))
print('-----------------') # 等价于 RF 的写法:printarg ${lists}
printarg(lists) # 等价于 RF 的写法:printarg @{lists}
printarg(*lists)
测试结果
** args are **
-----------------
[1, 2, 3, 4, 5]
-----------------
** args are **
-----------------
1
2
3
4
5
-----------------
获取列表变量中的值
一共两种获取的格式
- ${变量名}[下标值]
- ${变量名[下标值]}

测试结果

知识点
- 系统也提示啦,我们应该用 ${list}[0] 这种格式来代替 @{list} 获取列表的某个值
- 下标也是从 0 开始
- 下标可以传变量 ${list}[${index}]
Dict 变量
Dict 变量介绍
如果一个标量的值是一个字典,可以将该变量作为字典变量使用,格式为 &{EXAMPLE}
Test Case 表中定义字典变量的栗子

测试结果

我们来看看上述 RF 代码等价于 Python 的话,会是咋样的

&{dict} 和 ${dict} 的区别
- 字典变量也是标量的一种,只是值是字典,所以可以看成字典变量
- ${dict} 可以看成是一个完整的字典对象, &{dict} 可以看成整体拆成一个个单独的键值对
- ${dict} 在 Python 里面就是一个 dict ,然后&{dict} 就是展开其 dict 中的每个键值对,作为多个参数传入,和 **kwargs 一样效果,在Python 里叫关键字参数【可看这篇博文:https://www.cnblogs.com/poloyy/p/12526592.html】
我们将它们等价到Python 里面去看,这样更好理解
def printarg(**kwargs):
if len(kwargs) == 0:
print('** no kwargs **')
else:
print('** kwargs are **')
print('-----------------')
for k, v in kwargs.items():
print(repr(k) + ':' + repr(v))
print('-----------------') # 等价于 RF 的写法:printarg &{dicts1}
printarg(**dicts1)
测试结果
** kwargs are **
-----------------
'name':'yy'
'age':19
-----------------
获取字典变量中的值
只有一种获取格式: ${dicts}[key]

测试结果

知识点
- 系统也提示啦,我们应该用 ${dicts}[key] 代替 &{dicts}[key]
- 键可以传变量 &{DICT}[${KEY}]
- 重点: ${dict.key} 会报错哦,不可取
Robot Framework(12)- 详细解读 RF 的变量和常量的更多相关文章
- Robot Framework(13)- RF 循环的详细使用
如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 前言 RF用 ...
- Robot Framework(八) 资源和变量文件
2.7资源和变量文件 测试用例文件和测试套件初始化文件中的用户关键字和变量只能在创建它们的文件中使用,但资源文件提供了共享它们的机制.由于资源文件结构非常接近测试用例文件,因此很容易创建它们. 变量文 ...
- robot framework 如何处理循环条件下面的变量自增
下面举了一个基础栗子,可以运行的.${num}就是我需要的自增变量.有人也许会问为什么不用${i},不是我不想用,而是我${i}有其他用处,必须另外定义一个变量,需要注意的是定义变量的时候,应该在循环 ...
- Robot Framework(六)变量
变量 2.5.1简介 变量是Robot Framework的一个不可或缺的特性,它们可以在测试数据的大多数地方使用.最常见的是,它们用于测试用例表和关键字表中关键字的参数,但所有设置都允许在其值中使用 ...
- Robot Framework自动化测试环境部署
文档版本:v1.0 作者:令狐冲 如有问题请发邮件到:1146009864@qq.com 使用Robot Framework框架(以下简称RF)来做自动化测试. 模块化设计 1.所需环境一览表 软件 ...
- Python + Robot Framework 环境搭建
一.Python 安装 说明:由于RIDE是基于python2.x开发,后期未做python3.x兼容,所以这里安装python2.7. 链接: https://pan.baidu.com/s/1yf ...
- Robot Framework操作
Robot Framework 介绍 RobotFramework是一款基于python的开源自动化测试框架,遵守Apache License 2.0协议,在此协议下所有人都可以免费开发和使用.因为R ...
- Robot Framework语法学习(一)
Robot Framework语法学习: 一.变量的声明.赋值与使用 1.变量标识符:每个变量都可以用 变量标识符 ${变量名} 来表示. 2.变量声明:可以在TestSuite上点右键或者在Edi ...
- Robot Framework - 5 - 创建测试数据
Creating test data User Guide - Creating test data:http://robotframework.org/robotframework/latest/R ...
随机推荐
- Semaphores
信号量和P,V原语的使用可归纳为三种情形: 把信号量视为加锁标志位,其目的是为了实现对某个唯一的共享数据的互斥访问,如各个进程间的某共享变量,数据库中的某个记录. 共享数据的值与信号量本身的值没有直接 ...
- 数学--数论-- AtCoder Beginner Contest 151(组合数+数学推导)好题(๑•̀ㅂ•́)و✧
思路统计最大值出现的次数,和最小值出现的次数.虽然是每次都是MAX-MIN,我们先求MAX的和,然后再求MIN的和,做差. 这次代码写的真的很漂亮 题目地址: #include <bits/st ...
- 图论-网络流-Dinic (邻接表版)
//RQ的板子真的很好用 #include<cstdio> #include<cstring> #include<queue> #define INF 1e9 us ...
- 题解 CF1286A 【Garland】
updata on 2020.3.19 往博客园搬的时候看了看自己以前写的blog 其实没多久,才两个多月,感觉自己之前写的东西好罗嗦啊.. 但也是最近写的blog才开始多起来 当然现在也没好到哪去. ...
- P4932 浏览器(统计二进制1的个数)
P4932 浏览器 有\(n\)个数,\(x_1,x_2,\cdots,x_n\),问你有多少对\((u,v)\),使得\(x_u\operatorname{xor}x_v\)的二进制表示中有奇数个\ ...
- 概率dp部分题目
记录一些比较水不值得单独写一篇blog的概率dp题目 bzoj3036 绿豆蛙的归宿 Description 随着新版百度空间的下线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 给出一个有向 ...
- idea配置tomcat运行参数,防止中文乱码和内存问题
点击选择 Edit Configurations... 修改 VM options ,参数在最后可直接复制 -Xms550m -Xmx1250m -Dfile.encoding=UTF-8
- FastDFS文件服务器安装指南附安装包和自启动(看此篇就够了)
安装包在最后,本文为博主自己亲自安装记录 转载请注明出处 注意文字不清晰请放大看,放大看!! 安装包地址
- 学习vue第六节,v-if和v-show
vue 中的v-if和v-show <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- js数据类型很简单,却也不简单
最近脑子里有冒出"多看点书"的想法,但我个人不是很喜欢翻阅纸质书籍,另一方面也是因为我能抽出来看书的时间比较琐碎,所以就干脆用app看电子书了(如果有比较完整的阅读时间,还是建议看 ...