Robot Framework自动化测试三

从 F5 开始学习

Robot Framework 并没有像其它框架一样提供一份完整的 API 文档,所以,我们没办法通过官方 API文档进行习。RIDE 提供了 F5 快捷键来打开帮助文档。

image.png

search term: 用于搜索关键字。

source:用于选择相关库,默认在所有库下搜索关键字。

创建分上下两部分,上部分显关键字列表,下半部分显示某一关键字的详细说明。你一定很好奇这些
关键字的说明信息是哪儿来的?这说明是由 RIDE 读取的代码函数(方法)的系统注释获得的。

测试项目与测试套件的概念

如果你查看当前所创建的项目会发现,“测试项目”是一个目录。

image.png

“测试套件”则是一个 文件

image.png

“测试项目”和“测试套件”本质上并没有什么区别,如果你愿意,也可以把测试项目创建成一个文件:

image.png
image.png

如果你把“测试项目”创建成一个文件后,那么在这个“测试项目”下就不能再创建“测试套件”了,
只能创建测试用例。
除非我们所创建的“测试项目”非常小,只需要几个用例。一般情况下,我们会选择将其定义成一个
目录,这样它就可以分成多个套件,套件可定义为不同的业务,不同的业务下再分用例,结构会更加清晰。

当然,你同样也可以把“测试套件”创建成一个目录。

如果你把“测试套件”创建成了一个目录后,就不能直接在其下面创建用例了,还需要再创建的“File”
类型的“子测试套件”。说白了就是用例只能创建在 file 类型的套件中。

image.png

常用关键字介绍

log 就是“print”

log 关键字就是编程语言里的“print”一样,可以打印任何你想打印的内容。
在 test case 中填写以下内容:

log hello world

勾选测试用例,点击工具栏的“Run Tests”按钮或按快捷键“F8”执行测试用例。

在 Run 标签页,将看到执行结果:

通过运行结果中看到,“INFO:”的“hello world” 就是通过 log 关键字打印的信息

定义变量

在 robot Framework 中通过“Set variable”关键字来定义变量,如:

${a} Set variable hello world
log ${a}

执行结果

Starting test: Test Pro.Test Demo.testcase1
20180120 13:57:50.836 :  INFO : ${a} = hello world
20180120 13:57:50.840 :  INFO : hello world
Ending test:   Test Pro.Test Demo.testcase1

连接对象

“Catenate”关键字可以连接多个信息

image.png

执行结果

Starting test: Test Pro.Test Demo.testcase2
20180120 14:00:01.616 :  INFO : ${hi} = hello word
20180120 14:00:01.620 :  INFO : hello word
Ending test:   Test Pro.Test Demo.testcase2

加上“SEPARATOR=”可以对多个连接的信息进行分割。

image.png

执行结果

Starting test: Test Pro.Test Demo.testcase2
20180120 14:01:43.640 :  INFO : ${hi} = hello---word
20180120 14:01:43.644 :  INFO : hello---word
Ending test:   Test Pro.Test Demo.testcase2

定义列表

通过“Create List”关键字可以定义列表。

例 1

image.png

执行结果
每个字符串前面加 u,是为了统一编码问题,将字符串转为 Unicode 编码。

Starting test: Test Pro.Test Demo.testcase3
20180120 14:04:20.944 :  INFO : ${abc} = [u'a', u'b', u'c']
20180120 14:04:20.949 :  INFO : [u'a', u'b', u'c']
Ending test:   Test Pro.Test Demo.testcase3

例 2


image.png

如果通过“@{}”去定义列表的话,可以通过“log many”关键字进行打印

执行结果

Starting test: Test Pro.Test Demo.testcase3
20180120 14:07:46.411 :  INFO : @{abc} = [ a | b | c ]
20180120 14:07:46.416 :  INFO : a
20180120 14:07:46.417 :  INFO : b
20180120 14:07:46.418 :  INFO : c
Ending test:   Test Pro.Test Demo.testcase3

时间的操作

在 Robot Framework 中也提供操作时间的关键字。

(1) Robot Framework 中提供了“get time”关键字用来获取当前时间

image.png

执行结果

Starting test: Test Pro.Test Demo.testcase4
20180120 14:11:19.034 :  INFO : ${t} = 2018-01-20 14:11:19
20180120 14:11:19.038 :  INFO : 2018-01-20 14:11:19
Ending test:   Test Pro.Test Demo.testcase4

(2) “sleep”关键字用来设置休眠一定时间。

image.png

sleep 关键字默认以“秒”为单位。

执行结果
通过前后两次获取当前时间的差,可以清楚的看到 sleep 休眠 5 秒所起的作用。

Starting test: Test Pro.Test Demo.testcase4
20180120 14:13:22.936 :  INFO : ${t} = 2018-01-20 14:13:22
20180120 14:13:27.941 :  INFO : Slept 5 seconds
20180120 14:13:27.944 :  INFO : ${t} = 2018-01-20 14:13:27
Ending test:   Test Pro.Test Demo.testcase4

if 语句

通过“run keyword if”关键字可以编写 if 分支语句。

image.png

首先定义两个变量 a 等于 59 。
If 判断 a 大于等于 90 ,满足条件 log 输出 “优秀 ”;
不满足上面的条件,接着 ELSE IF 判断 a 大于等于 70 ,满足条件 log 输出 “良好”;
不满足上面的条件,接着 ELSE IF判断 a 大于等于 60 ,满足条件 log 输出 “及格”;
上面的条件都不满足,ELSE log 输出“不及格”。
注:注意 ELSE IF和 ELSE 前面的三个点点点(...)

执行结果

Starting test: Test Pro.Test Demo.testcase5
20180120 14:28:19.329 :  INFO : ${a} = 59
20180120 14:28:19.341 :  INFO : 不及格
Ending test:   Test Pro.Test Demo.testcase5

for 循环

在 Robot Framework 中编写循环通过“:for”。

例 1,执行 10 次循环。

image.png

执行结果
通过“:for”定义 for 循环;in range 用于指定循环的范围。
注意,in range 定义为 10,它的范围是 0~9

Starting test: Test Pro.Test Demo.testcase6
20180120 14:31:28.426 :  INFO : 0
20180120 14:31:28.435 :  INFO : 1
20180120 14:31:28.441 :  INFO : 2
20180120 14:31:28.447 :  INFO : 3
20180120 14:31:28.454 :  INFO : 4
20180120 14:31:28.460 :  INFO : 5
20180120 14:31:28.466 :  INFO : 6
20180120 14:31:28.473 :  INFO : 7
20180120 14:31:28.480 :  INFO : 8
20180120 14:31:28.487 :  INFO : 9
Ending test:   Test Pro.Test Demo.testcase6

例 2,遍历列表

image.png

“create list” 关键字用来定义列表(a,b,c),“@{}”用来存放列表。
通过过“:for”循环来来遍历@{abc}列表中的字符。

执行结果

Starting test: Test Pro.Test Demo.testcase6
20180120 14:33:41.149 :  INFO : @{abc} = [ a | b | c ]
20180120 14:33:41.156 :  INFO : a
20180120 14:33:41.161 :  INFO : b
20180120 14:33:41.167 :  INFO : c
Ending test:   Test Pro.Test Demo.testcase6

例 3,循环中的判断

image.png

通过“Exit For Loop If”关键字时行 for 循环内的判断,当满足 Exit For Loop If 条件后,循环结束。

执行结果
从执行结果看到当循环到字符 c 时,Exit For Loop If 条件成立,结束循环;通过 log 打印当前的字符 c。

Starting test: Test Pro.Test Demo.testcase6
20180120 14:35:13.377 :  INFO : @{abc} = [ a | b | c ]
20180120 14:35:13.395 :  INFO : Exiting for loop altogether.
20180120 14:35:13.402 :  INFO : c
Ending test:   Test Pro.Test Demo.testcase6

强大的 Evaluate

为什么说“Evauate”关键字强大呢。因为通过它可以使用 Python 语言中所提供的方法。

例 1,生成随即数

在 Python 中我们可以这样来引和并使用方法:

>>> import random
>>> random.randint(1000, 9999)
3308

random 模块的 randint()方法用于获取当前时间。
在 Robot Framework 中使用“Evauate”也可以调用 Python 所提供的 random 模块下的 randint()方法。

image.png

执行结果

Starting test: Test Pro.Test Demo.testcase7
20180120 14:39:31.348 :  INFO : ${d} = 5773
20180120 14:39:31.352 :  INFO : 5773
Ending test:   Test Pro.Test Demo.testcase7

例 2,执行本地程序

image.png

通过调用 Python 所提供的 os 模块中的 system()方法可以执行本地 Python 文件。至于在.py 文件中
Python 可以做任何想做的事。
对于 system()方法来说,它也不单单可执行 Python 文件,任何在 cmd 命令提示符下可运行文件和命
令,它都可以执行。
不过,一般情况下不建议通过 system()方法去执行外部程序。这样做其实就脱离了 Robot Framework,
也就是说不管 Robot Framework 什么事了。我们尽量把要做的事情通过 Python 封装成关键字给 Robot
Framework 使用。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容