RobotFramework 基础语法

RF 基础语法整理修改版,之前整理了一点 RF 的基础语法,有遗漏的地方,偶然看到了,
补充一下
**欢迎加入测试交流群:夜行者自动化测试(816489363)进行交流学习QAQ**
 
                                                                                                                        — 阿木木

搭建测试脚本框架的思想:

通常我们不建议把测试脚本写成-一个顺序执行的测试过程,我们希望按照下面的层次去设
计我们的测试脚本
● 测试层:模拟手动测试用例流程,串联一-系列已经封装好的功能模块,并在合适的时候
加入断言,判断测试结果
● UI层:抽象UI操作上的通用动作,根据不同页面的功能,对其ACTION,功能进行封装。
● 业务逻辑层:非UI操作,是一些具体的业务流程,把这些业务逻辑进行分类归纳,封装成
不同的功能模块
● 数据处理层:主要是对在测试过程中用到不同数据的处理,比如配置参数读取,读取数据
库,解析HTTP响应数据,以及读取不同格式的外部文件等等。我们希望这些都能封装成不
同类。
● 公用程序层: 主要是对测试过程中常用一-些功能的封装,比如一-些I/0操作,日期,读
取系统信息等等
● 日志层:测试是一定要有日志的,现在有许多的成熟的日志框架,我们可以直接引用这些
框架,比如logger, log4j等等

RF的BuiltIn库关键字简介(重要)

Evaluate:用于执行Python语句,如计算等
Should系列:用于判断,如Should Be Equal As String 判断两个字符串是否相同
Convert to系列:用于类型转换,如Convert To String
Run Keyword系列:根据判断条件的真假决定是否执行关键字,如Run Keyword If
Exit For Loop:用于退出循环
根据实际情况去查看RF保留的关键字即可

Robot framework基本数据类型的创建

RF用$,@,&分别表示变量,列表,和字典
RF的几种数据类型
${var} set variable ${3}
${float} set variable ${3.14}
${float} set variable ${-1e-4}
${test_false} set variable ${false}
${test_true} set variable ${true}
${test_null} set variable ${null}
${test_None} set variable ${None}
${test_string} set variable test10086
${test_tuple} set variable 1,2
@{test_list} create list 1 xy
${test_dictionary} create dictionary a=12 b=13 c=14 ${test_space} set variable ${space}
${test_ 引号空格 } set variable ' ${space} '
${test_4*space} set variable ${space*4}
${test_4*space} set variable ' ${space*4} '
${test_empty} set variable ${empty}
因为RF中都是字符,传一些特殊的值就需要用内置的变量类似${6}的格式来使用,
常用的有${true},${false} ,${None} ,${null},${SPACE},${EMPTY}。

Robot frameworkIF判断

数字判断
${num1} set variable ${3}
Run Keyword If ${num1} ==0 log num 的值为 0
# 在 ELSE IF 这些关键字严格区分大小写,需要注意,前面的 ... 必须加上,不然会报语法
错误
... ELSE IF ${num1} <0 log num 的值小于 0
... ELSE IF ${num1} >4 log num 的值大于 0
... ELSE log 灵异事件吧
字符判断
${str1} set variable str1
Run Keyword If ' ${str1} '=='str2' log 结果为 str1=str2
... ELSE IF ' ${str1} '=='str1' log str1 的值 ==str1
... ELSE IF ' ${str1} '=='str3' log str1 的值 ==str3
... ELSE log 灵异事件吧
#变量var值为字符时,在判断条件中其需要加单引号或双引号(如上图红色框中所示),
为′{var} ’ 或者 ” var ”
#在判断条件中,与变量 {var}对比的字符常量也需要加单引号或双引号,为 ’ tttt ’ 或
者 ” tttt ”
布尔类型
${var} set variable ${false}
Run Keyword If ${var} == ${0} log 布尔值的数字值为 0
... ELSE log 布尔值的数字值为 1
Run Keyword If ' ${var} '==' ${true} ' log 该变量为 true
... ELSE IF ' ${var} '==' ${false} ' log 该变量为 false
... ELSE log 两者都不是
#在判断条件中,与变量 {var}对比的布尔值也需要加单引号或双引号,为 ’ true′或
者 ” {true} ”
列表中属性值判断
@{varlist} create list ${12} xxmm ${true}
${varfirst} set variable ${3}
${varsecond} set variable xxmm Run Keyword If ${varfirst} in @{varlist} and ' ${varsecond} ' in
@{varlist} log 存在该数据
... ELSE log 不存在
列表与列表是否相等对比
@{varlist1} create list ${11} ssmm ${false}
@{varlist2} create list ${22} ssmm ${true}
Run Keyword If @{varlist1} == @{varlist2} log 列表相等
... ELSE log 两个列表不相等
列表元素对比
@{varlist1} create list ${22} ddmm ${false}
@{varlist2} create list ${11} ddmm ${false}
Run Keyword If ' @{varlist1}[1] '==' @{varlist2}[1] ' log 两个列表的
第二个元素相等
... ELSE log 两个列表的第二个元素不相等
#列表元素值(如上图中@{varlist2}[1])为字符时,在判断条件中其需要加单引号或双引
号,如下图中@{varlist2}[1],变为 ’ @{varlist2}[1] ’ 或者 ” @{varlist2}[1] ”

Robot frameworkFOR_IN循环

FOR_IN 循环
设置循环次数
:FOR ${i} IN RANGE 3 # 从 0 开始,循环三次
\ log ${i}
:For ${i} IN RANGE
1
10 # 从 1 开始,循环 9 次
\
log ${i}
:For ${i} IN RANGE
1
10 2 # 从 1 开始,步长为 2 ,循环 5 次
\
log ${i}
#用于与一般关键字做区分,对于循环结构体内的每一行,使用 \ 作为改行的行首关键
字。
#对于循环中的变量,可以在 IN 关键字后给出所有变量,也可以从一个列表中进行赋值,
每次循环从列表中取出一个值
多参循环
:FOR ${i} ${j} IN 1 2 x y
\ log many ${i} ${j} # 第一次循环输出 1 , 2 ,第二次循环输入 x,y
多参列表循环
@{list} Create List 1 2 3 amm
:FOR ${i} ${j} IN @{list}
\ log many ${i} ${j} # 第一次循环输出 1 , 2 ,第二次循环输入 x,y
FOR_IN 嵌套循环
# 定义两个关键字内部循环、外部循环进行测试
@{a}
Create List a1 a2 a3 a4
@{b} Create List b1 b2 b3 b4
@{c} Create List c1 c2 c3 c4
@{table} create list @{a} @{b} @{c} 外部循环 @{table}
***Keyword***
内部循环
[Arguments] ${row}
:FOR ${cell} IN ${row}
\ log ${cell}
外部循环
[Arguments] @{table}
:FOR ${row} IN @{table}
\ log many 开始进入内部循环
\ 内部循环 ${row}
#PS :注意参数传递问题, ${row} 可以代指 @{row}
重复执行 x
Repeat Keyword 3 log 循环执行 3 次
退出循环
@{list} Create List 1 2 3 amm
:FOR ${i} IN ${list}
\ log ${i}
\ Run Keyword If ${i} == ${2} Exit For Loop

Robot framework变量运算

特殊变量运算
${test_ 数字变量运算 } set variable ${3*4}
${test_ 布尔类型 true 运算 } set variable ${true*4-3}
${test_ 布尔类型 false 运算 } set variable ${false*4+5}
${test_space 运算 } set variable ${space*6} +111
加减乘除
${var1} set variable ${5}
${var2} set variable ${6}
comment 加减乘除运算
${var1+var2} evaluate ${var1} + ${var2}
${var1-var2} evaluate ${var1} - ${var2}
${var1*var2} evaluate ${var1} * ${var2}
${var1/var2} evaluate ${var1} / ${var2}
Python表达式运算
${result} set variable ${3.14}
${status} evaluate 0< ${result} <10
${result 向上取整 } evaluate int( ${result} )
${result 向下取整 } evaluate math.ceil( ${result} ) math

RobotFramework 基础语法相关推荐

  1. FPGA(2)基础语法 -- 按键控制led(alway@语句)

    目录 1.module 文件名(端口) 2.声明关键字 3.always@语句 代码 1.module 文件名(端口)  注:这里最好养成习惯,只在文件名后面的括号中声明引脚变量,输入输出.关键字类型 ...

  2. javascript基础语法——表达式

    前面的话 一般地,关于javascript基础语法,人们听得比较多的术语是操作符和语句.但是,其实还有一个术语经常使用,却很少被提到,这就是javascript表达式(expression).本文将详 ...

  3. Rust语言开发基础(六)基础语法

    2019独角兽企业重金招聘Python工程师标准>>> 一.变量的定义和使用 其它常见的编程语言对变量的定义通常是通过声明类型和使用关键new来创建一个变量,但Rust不是,Rust ...

  4. python列表嵌套字典取值_Python基础语法:你不得不知的几种变量类型

    (点击上方快速关注并设置为星标,一起学Python) 作者:kina_chen來源:简书 01. Python编码Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字, ...

  5. python赋值语句的一般格式为_Python 基础语法

    Python 基础语法 Python 语言与 Perl,C 和 Java 等语言有许多相似之处.但是,也存在一些差异. 在本章中我们将来学习 Python 的基础语法,让你快速学会 Python 编程 ...

  6. 深入浅出CMake(二): 基础语法

    在<深入浅出CMake(一):基础篇>文章中,我们已经知道了怎么依葫芦画瓢编写简单的 CMake 构建文件了,但如果应对复杂的工程的话,这还是远远不够的. CMake 是一套编译构建体系, ...

  7. Python基础语法学习笔记

    Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...

  8. Python的零基础超详细讲解(第三天)-Python的基础语法

    多行语句 Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠 \ 来实现多行语句,例如: duohang = item_one + \item_two + \item_three ...

  9. Python的零基础超详细讲解(第二天)-Python的基础语法1

    Python 基础语法 打开python的编辑器 这里注意的是,之前下载的python在电脑主页上没有快捷方式,需要在win开始界面中打开 最终打开效果是一个白色的跟终端类似的编辑器,我们输入的时候是 ...

最新文章

  1. VMware workstation中rhel安装VMware tools失败
  2. 腾讯面经 | 数据从业者的一次“典型”面试
  3. Java面试宝典之开源框架!
  4. 11选5下期算法_本周六周日【高二直播】辅导网课预告:通用技术电控二三极管、多用电表测量、数字逻辑电路、解析枚举递归算法,2022浙江选考技术...
  5. Linux网络编程服务器模型选择之并发服务器(下)
  6. sdp ddp内存怎么分_旗舰手机跑分66万+,缩短与PC差距,手机成生产力工具也许不是梦...
  7. 美国商务部发布软件物料清单 (SBOM) 的最小元素(上)
  8. Cocos2d-x学习之创建Android工程和编译
  9. java 设置内存参数_Java虚拟机内存参数设置
  10. 域名ssl证书下载及部署
  11. android浏览器病毒,2018安卓手机杀毒软件排行榜
  12. WPF 做的天干地支 乾坤八卦 罗盘
  13. 小程序---宿主环境(常用组件、api)---02
  14. 什么是Scrum团队?
  15. ARM汇编之MOV指令
  16. MongoDB 条件查询--比较操作
  17. 计算机科学与技术大学博士后,清华大学博士后
  18. Ubuntu20.04启动paraFoam失败
  19. 基于eclipse开发源码分享-SSM+Activiti的公文管理系统,
  20. 聊一聊Rust的结构体

热门文章

  1. NVIDIA 系统实时监控程序jtop的安装部署
  2. Java锁-Synchronized深层剖析
  3. 传统药茶方:教您配制50种茶,喝出健康百病除!
  4. 强噪音环境对计算机影响,电脑噪音的来源及危害
  5. html 期末大作业,qx.html
  6. linux中setfacl命令,Linux 中的Setfacl命令
  7. 00后初中辍学,转行程序员后,终于找到了女朋友
  8. 稀疏学习:从人脑得到灵感,让深度学习突破算力限制
  9. 《机器学习》第十一章 特征选择与稀疏学习
  10. 韩寒给我的感觉----他就像一疯狗逮着谁咬谁