Robot Framework-Keyword-06

keyword 关键字

RF主要就是关键字驱动的自动化测试,关键字是它的核心
关键字分为系统关键字和用户关键字
系统关键字:来源于测试库,底层就是python函数
用户关键字:来源于资源文件,自己可以创建的是User Keyword用户关键字,可以完全像设计函数一样设计用户关键字

用户关键字
新增用户关键字,在之前的资源文件resource1.robot上单击鼠标右键,选择 New User Keyword
Robot Framework-Keyword-06_第1张图片

点击ok查看页面内容
鼠标点击随机字符右键,比测试案例里面多了一个Find Usages 命令,这个和工作区的Edit界面里面Find Usages作用是一样的。
**Find Usages:**可以找到这个关键字在哪里使用了,也可以通过单击界面上的“Go to definition”命令返回到定义这个关键字的地方。
Setting设置项内容:
Documentation:文档;
Arguments:关键字的传入参数;
Teardown:和Case的类似,设置关键字执行完成时的动作;
Timeout:和Case的类似,运行超时的时间设置;
Return Value:返回值。

除了Teardown和Timeout是测试案例里也有的,多出来的有传入参数和返回值,有了它们,用户关键字才是真正的“如鱼得水”。
传入参数Arguments
(1)必填参数
Log关键字里的第一个参数message就是必填参数,只要是这种参数,后面没有默认值的就是必填参数
给随机字符加两个参数用|分隔
Robot Framework-Keyword-06_第2张图片
然后在测试案例对应的测试套件中加载resource1.robot资源,参考前面的笔记,然后在案例里面输入随机字符,后面两个格子颜色变为红色,表示参数必填
Robot Framework-Keyword-06_第3张图片
鼠标放到随机字符上面,按Ctrl键可看到该关键字的说明:
Robot Framework-Keyword-06_第4张图片
(2)选填参数
Log关键字里的第二个参数level=INFO就是选填参数,主要是因为它有一个参数的默认值,默认值是用“=”加上值来设置,如果想默认为空,只写等号就可以了。
再次编辑刚刚增加的Arguments,给arg2加上默认值,如果只给前面的arg1加上默认值,点击保存会报错,必填参数不允许在选填参数后面,也就是说,如果某一个参数设置成了选填参数,那么它后面的参数都必须是选填参数,不能是必填参数
Robot Framework-Keyword-06_第5张图片
保存后查看案例,现在只有一个参数是必填的,所以只有一个红色格子了
Robot Framework-Keyword-06_第6张图片
注意:因为参数之间使用“|”进行分隔,所以如果想在默认值里使用“|”作为一个值,而不是分隔符,那么就要使用"\|"来表示“|”的值。
(3)List变量参数
List变量也可以作为参数,但是List变量只能放在最后一位,如果放在前面就会报错提示"List and scalar arguments must be before named and dictionary arguments" ,变量名和等号间不能有空格,如果有空格,系统会报参数语法错误。
Robot Framework-Keyword-06_第7张图片
查看关键字说明:
Robot Framework-Keyword-06_第8张图片
可以对照log和set variable关键字,*就是list变量参数

在关键字里面增加脚本:
Robot Framework-Keyword-06_第9张图片
然后在案例里面传几个值:
Robot Framework-Keyword-06_第10张图片
查看运行结果:
在这里插入图片描述
这里没有打印出${arg2}的值,本应该打印出默认值,原因是给@{arg3}传了值,虽然空出来了,RF会认为传的是空值,如果想打印出来这个值,不要传后面的值即可,修改脚本:
Robot Framework-Keyword-06_第11张图片
查看运行后结果:
在这里插入图片描述
这里说明,如果有多个有默认值的参数,如果后面的参数传值了,那么前面的参数也认为传值了,即使你什么都不写,它也认为是传了空值。

Return Value 返回值

传入参数的时候可以用单值变量,也可以用List变量,那么在Return Value的时候也是可以用单值变量和List变量的。
单个单值变量返回
新增关键字随机字符1,将${arg1}放到Return Value里面:
Robot Framework-Keyword-06_第12张图片
然后在案例里面增加脚本,用变量${getArg1}获取返回值然后打印出来:
Robot Framework-Keyword-06_第13张图片
查看运行后结果:
Robot Framework-Keyword-06_第14张图片
多个单值变量返回

支持多个变量返回也是用"|"分隔

(1)使用Scalar变量接收返回值
增加关键字随机字符2:
Robot Framework-Keyword-06_第15张图片
案例里面增加脚本将1替换成2即可:
Robot Framework-Keyword-06_第16张图片
查看运行后结果:
Robot Framework-Keyword-06_第17张图片
(2)使用List变量接收返回值
因为这里返回了2个元素,也知道这里返回的其实是List,最好用List变量来接收,那么在案例中加一个@{ListArg2}获取这个返回值,然后打印出来。为了方便打印,笔者在@{ListArg2}前后加了“=”符号,新加脚本:
在这里插入图片描述
查看运行后结果:
Robot Framework-Keyword-06_第18张图片
(3)使用多个Scalar变量接收返回值
因为有两个返回值,所以可以用两个变量来获取值,新增脚本:
Robot Framework-Keyword-06_第19张图片
查看运行后结果:
Robot Framework-Keyword-06_第20张图片
上面的3种方式,前两种差不多是一样的,而第三种是最好能知道返回值的个数,这样才能一一对应,但是如果个数不一样怎么办呢?

  • 返回值个数大于取值变量个数
    把随机字符2的return value值加一个:
    Robot Framework-Keyword-06_第21张图片
    查看运行后结果:
    Robot Framework-Keyword-06_第22张图片
    会先把第一个值给${valArg1},然后把后边的值给${valArg2},于是${valArg2}变成了List变量。
    所以可以得出结论,对于多个取值变量的个数少于返回值的个数,它会先把前面的值一一对应的给前面的取值变量赋值,这些变量仍然是单值变量,而最后一个变量会转成List变量接收剩下的值。

  • 返回值个数小于取值变量个数
    把随机字符2的return value改到只有一个
    运行后查看结果:
    在这里插入图片描述
    这种就会报错了,“Expected list-like object”这里期待的是返回多个值,list-like的对象,像List一样的变量,但是只传回来一个值,两个变量不够分的。
    因此,知道返回值的个数比较重要,如果不确定返回值的个数,就可能会出现报错的情况,因此最好使用List变量或单个变量来取值,避免出现返回值个数少于取值变量个数的情况

(3)List变量返回
新增随机字符3:
Robot Framework-Keyword-06_第23张图片
新增case:
Robot Framework-Keyword-06_第24张图片
查看运行后结果:
Robot Framework-Keyword-06_第25张图片
正是因为用户关键字有了传入参数和返回值,它就具备了函数的特征,函数能实现的功能,用户关键字一般也能实现。

你可能感兴趣的:(Robot Framework-Keyword-06)