Robot_Framework:关键字

Keyword关键字

1、Robot Framework主要就是关键字驱动的自动化测试,关键字是它的核心。从关键字的类型来说,可以分为系统关键字和用户关键字两种
    ⑴系统关键字通常都是来源于测试库
    ⑵用户关键字更多的是来源于资源文件(当然也可以在测试套件中加用户关键字,但是不推荐这样)

2、系统关键字底层就是Python函数,而用户关键字其实和函数也没什么两样,完全可以像设计函数一样设计自己的用户关键字
    ⑴RF中的关键字其实就是Python函数。因此常说的调用关键字实际上就是调用(关键字对应的)Python函数
    ⑵虽然RF中自带了很多关键字,但是在实际中可能并不能满足我们的需要,因此更多的时候还是需要我们自己编写关键字(Python函数)

3、可以在资源文件里添加用户关键字,也可以在测试套件中添加关键字,后者不推荐
    ⑴在资源文件里面添加关键字:可以将类似的关键字放在同一个资源文件中,如果关键字都单独放,就会显得很杂乱

4、RF中测试用例、Python函数、关键字、资源文件的关系一般为:
    ⑴一个Python函数封装成一个关键字
    ⑵一个或多个关键字组成一个资源文件
    ⑶一个或多个关键字组成一个测试用例

RF直接调用Python函数

1、一般情况下都是:Python函数封装成关键字后,在测试用例中直接调用关键字(组成一个完整的测试用例)

2、但是实际中也可以在测试用例中直接调用Python函数

例1:
⑴编写Python函数

⑵导入Python文件

⑶编写测试用例

⑷输出

注:
1、在RF中不管是直接调用Python函数还是资源文件中的关键字,都需要先导入对应的函数(关键字)所在的文件。不导入对应的文件RF怎么知道去哪里找这个函数或关键字呢
    ⑴导入PY文件:在TestSuit层级的Edit页面点击【Library】按钮,然后选择并导入函数所在的Python文件
    ⑵导入资源文件:在TestSuit层级的Edit页面点击【Resource】按钮,然后选择并导入关键字所在的资源文件

2、上面用例的大概意思为:
    ⑴分别使用Set Variable或Create Dictionary创建了一个Scalar、List、Dict型变量
    ⑵然后将步骤1中的三个变量分别作为入参传递给了Python函数"check_type",并将Python函数的返回值赋值给了一个变量
    ⑶然后使用log关键字打印Python函数"check_type"的返回值

3、可以看出:在RF中调用Python函数(关键字),实际上跟直接在编辑器(如Pycharm)中调用Python函数是一样的
    ⑴函数的入参语法:函数需要多少个参数就需要传入多少个参数
    ⑵函数的返回值:可以将函数的返回值赋值给一个变量(然后将该变量作为参数传递给其他函数或关键字)

4、需要注意的是:
    ⑴一般创建普通列表创建的是Scalar型变量:将列表看做一个整体
    ⑵创建可变参数(*args)时使用的是@标识符。但是调用List型变量时,使用的是$标识符(调用时肯定是需要将其看做一个整体)
    ⑶创建普通字典或可变参数(**kwargs)时都是使用的是&标识符。但是在调用字典时,使用的是$标识符(调用时肯定是需要将其看做一个整体)

5、虽然RF中可以直接调用Python函数,但是这样的话不能很直观的表现出函数的作用等等,因此更多的时候还是会将函数封装成关键字,然后在测试用例中调用关键字

在TestSuit下创建关键字

1、在TestSuit下的关键字,作用范围为整个TestSuit:该Suit下的测试用例都可以使用该关键字

2、在TestSuit下创建关键字的步骤大概为:鼠标右键对应的TestSuit目录->点击"New User Keyword"->定义关键字名字->OK->编辑关键字参数、返回值等·

例2:
⑴编写Python函数

⑵导入关键字

⑶编写关键字名字

⑶编辑关键字内容

⑷调用关键字

注:arguments里面的参数顺序、参数类型要与Python代码里面一样:RF是按照arguments中参数的顺序(位置)传递给Python函数的

在资源文件下创建关键字

1、在资源文件下的关键字,只要导入了该资源文件的TestSuit都可以使用其下面的关键字

2、整体来说,在资源文件夹下创建关键字,与在TestSuit下创建关键字是差不多的

例3:
⑴编辑Python函数

⑵导入PY文件
    ①因为关键字是位于资源文件下的,因此选择对应的资源文件并切换到其下的"Edit"页面
    ②点击"Library"按钮->弹出脚本选择对话框->点击"Browse"选择对应的PY脚本路径(关键字关联的是PY脚本,因此导入的是Library)
    ③成功导入PY脚本后,脚本路径显示为黑色或蓝色(红色时表示未成功,不过也有例外)。下图中其他三项可以不管

⑶定义关键字
    ①在任意资源文件名上右键->选择"New User Keyword"
    ②在"Name"文本框中输入关键字的名称,中英文都可以
    ③Arguments可以先不管。点击"OK"按钮创建成功(这里创建的相当于只是创了一个空的关键字来占位)

⑷编辑关键字
    ①选择要创建的关键字并切换到其下的"Edit"页面
    ②在Arguments和Return Value下填写关键字(函数)需要传入的参数变量和需要返回的返回值变量(其他项可以选填)
    ③关键字的Settings页面和Test Case有些区别(这里面主要的就是Arguments和Return Value了)
        ⑴Documenttation:文档,该关键字的相关说明
        ⑵Arguments:关键字的传入参数
        ⑶Teardown:和Case的类似,设置关键字执行完成时的动作
        ⑷Timeoue:和Case的类似,运行超时的时间设置
        ⑸Return Value:关键字的返回值

⑸导入资源文件
    ①因为这里创建的关键字所在资源文件属于外部资源文件,因此在使用时需要导入对应的资源文件,才能使用该资源文件下的关键字
    ②选择将要创建测试用例所在的Test Suite并切换到"Edit"页面,点击"Resource"按钮导入资源
    ③这个例子中测试用例(suite)关联的是资源文件,因此是通过"Resource"导入的。当然若测试用例直接用的是PY函数(没有封装成关键字的PY函数,就需要通过Library导入)

⑹调用关键字

注:
1、用例的意思为:
    ⑴使用RF自带关键字"Set Variable"创建一个列表,并将创建的列表赋值给变量"${list}"
        ①这里需要注意的是:要使用Scalar型变量,不能使用List型变量,因为这个列表是作为一个值传递给PY脚本的
        ②同样最后关键字"列表转为字典"的返回值是一个字典,这个字典也是当做一个整体使用的,因此也是Scalar型变量
    ⑵将上一步创建的列表变量"${list}"作为参数传递给关键字"列表转为字典",并将关键字的返回值赋值给变量"${dict_data}"
        ①调用关键字和设置关键字的格式差不多:返回值在左边、函数(关键字)在中间、参数在右边
    ⑶最后通过关键字"log"打印上一步关键字的返回值"${dict_data}"

2、PY脚本、关键字、资源文件、测试用例之间的关系为:
    ⑴PY脚本组成关键字,关键字组成资源文件,资源文件中的关键字组成测试用例
    ⑵关键字通过Library关联PY脚本,测试用例(所在Suite)通过Resource关联资源文件(测试用例也可直接通过Library关联PY脚本)

关键字参数

1、前面在介绍定义关键字时,说过:关键字的参数在定义、调用时必须与Python函数定义参数时一致,包括参数的个数、位置等
    ⑴同样在测试用例中调用关键字时,参数的传入也是必须和Python函数中的一致

2、Python函数中的参数类型分为:必填参数(位置参数)、默认参数、可选参数(*args和**kwargs)。因此在RF中也必须要有对应参数的定义方式

必填参数

1、前面我们在介绍关键字的定义时,都使用的是必填参数:在调用时必须按位置传入正确个数的参数

2、关键字拥有两个或以上的参数时:参数之间使用"|"进行分割

3、关键字参数类型为"${numberA} | ${numberB}"这样格式的表示这些参数都是必填的

4、在测试用例中调用拥有必填参数的关键字时,RF输入框会变成红色来提示需要输入必填参数

例4:

默认参数

1、Python中的默认参数指:定义函数时,给参数定义一个默认值,调用函数时,没有传入参数值就会使用默认值,传入了参数值就使用传入的值

2、在RF中给参数设置默认值与在Python中给参数设置默认值是一样的:默认值用"="加上值来设置,如果想默认为空,只写等号也是可以的

3、因为参数之间使用"|"进行分割,如果参数的默认值为"|"时,就需要使用"\|"来表示值为"|"

4、关键字的默认参数必须位于必填参数之后

5、RF中没有None,在设置默认参数值时:"${变量名}=",表示空字符串
    ⑴因此RF测试用例中没有传入默认参数值,但RF在传给PY代码时,会给PY代码一个空字符串

例5:
⑴编辑函数

⑵编辑关键字
    ①定义默认参数的格式为:${变量名}=默认值
    ②在设置关键字参数时:上面需要设置为${变量名}=默认值,下面就不需要在设置值了(表格中为${变量名})

⑶调用关键字

可变参数:*args

1、前面介绍过List型变量主要是用来定义可变参数(*args)的。也就是说在RF中定义可变参数时,需要将变量定义为List型

2、List变量也可以作为参数,但是List变量只能放在最后一位:List变量本身来说,它是可变的(可变参数),即List的成员数量不确定,如果放在前面的话,就没法确定传入的参数到底是给谁的

例6:
⑴编辑函数

⑵定义关键字
    ①RF中在设置可变参数为List型时:需要使用@标识,@标识标识可变参数

⑶调用关键字

可变参数:**kwargs

1、在RF中定义可变参数**kwargs主要是使用Dict型变量(使用&标识符)

2、Dict型变量不仅可以用来定义普通的字典,还可以用来定义可变参数
    ⑴定义普通的字典后,在字典使用是需要使用$标识符

例7:
⑴编辑函数

⑵定义关键字

⑶调用关键字

注:总的来说
1、在RF中定义列表、字典都使用$标识符

2、定义可变参数*args时使用@标识符

3、定义可变参数**kwargs时使用&标识符

4、参数类型可以为Scalar、List、Dict型
    ⑴必填参数一定要排在非必填参数之前:参数顺序与Python语法一致
    ⑵非必填参数加上"{变量名}=值"表示默认值,若只加上"="表示默认为空

例8:封装一个基于requests库的通用发送请求的方法

注:上面最后一张图片中应该是json=${data},而不是json=data。$表示值为一个变量,data表示值为data字符串

返回值

1、前面例子中Python函数(关键的返回值都是一个),这里就不重复介绍了

2、在设置返回值时,也支持设置多个返回值(PY函数需要与关键字设置对应),也是使用"|"进行分割

例9:

拓展

Setup和Teardown运行多个关键字

1、在进行初始化等操作时,可能需要运行多个关键字。这种场景RF也提供了对应的写法

2、格式:run keywords | 关键字1 |关键字1参数1 | 关键字1参数2 | AND | 关键字2 | 关键字2参数1 | 关键字2参数2

例10:
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不怕猫的耗子A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值