欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Robot_Framework:基础_关键字

程序员文章站 2024-03-22 16:09:40
...

资源文件

1、测试套件主要是存放测试案例的,而资源文件主要就是用来存放用户关键字的的

2、在实际的项目测试过程中,往往需要创建许多这样的具有通用性的用户关键字。且不希望这些关键字依附于某个测试套件,甚至是某个项目。那么可以创建资源文件用于存放这些关键字

 

创建资源文件

创建资源

步骤1:
1、右键“测试项目”选择“New Resource”创建资源

2、这种创建在项目内的资源文件我叫它是内部资源文件,区别与下面的外部资源文件

Robot_Framework:基础_关键字

步骤2:

1、填写好资源文件的相关信息:名称、类型(TXT)

2、刚刚新增的资源文件时灰色的,是因为它没有被任何的suite或Resource加载

Robot_Framework:基础_关键字

 

资源文件的Settings设置项

1、Resource的Settings界面如下图所示

2、Settings里面只有一个Documentation。Resource右侧的工作区基本上和文件型的Test Suite一样。多了一个"Find Usages"按钮,是查找关键字用的

Robot_Framework:基础_关键字

 

 

加载资源

1、加载资源主要是在工作区的Add Import里单击"Resource"按钮来添加的,因为Test Suite和Resource的工作区里面都有Add Import功能,因此可以在这两个地方进行加载资源

2、加载资源感觉就是调用资源:只有加载资源后才能使用对应资源里面的关键字

3、关于添加资源的作用域与库一样。我这里是添加到的测试套件中,那么它的作用域就是当前测试套件下的所有用例

步骤1:
1、选择测试套件(Resource)的Edit标签页右侧的“Resource”按钮来添加资源

2、在"Path"文本框中输入资源文件的完整路径,也可以通过"Browse"按钮来选择资源文件的路径

Robot_Framework:基础_关键字

步骤2:
1、填写资源文件的相关信息后,点击"OK"按钮即可导入资源文件

2、导入资源文件后,资源文件路径显示为蓝色带下划线的状态就表示带入成功了(有时导入成功了也会显示成黑色,具体是否成功可以通过调用资源文件下的关键字来确定)

3、下图中有个黑色的py文件路径:其是直接调用的py文件。即PY文件没有封装成关键字,直接使用的是Python函数。这种导入需要通过"Library"按钮来导入

Robot_Framework:基础_关键字

 

 

External Resource外部资源文件

1、外部资源主要是指不在Project管辖范围内的资源文件

2、如果是目录的Project,只要不在自己目录内的资源文件都算是资源文件

3、如果是文件的Project,它自己无法创建资源文件,其他的资源文件都算外部资源


添加外部资源

1、在External Resource外部资源目录上右键,点击"Add Resource",点击后会弹出文件夹,选择需要添加的资源文件,选择好后,点击"OK"即可添加资源文件

2、成功添加外部资源文件后,外部资源文件会显示在External Resource目录下

3、在External Resource下添加的资源只能看看,真正的调用还是要到Test Suite或Resource下去添加才行。方法与调用内部资源文件(自己叫的)方法一样

4、要新建一个外部资源文件的话,我的办法是:选择合适的目录后,先手动增加一个空白的TXT文件,然后再在RF中添加外部资源文件

Robot_Framework:基础_关键字

 

 

Keyword 关键字

1、Robot Framework主要就是关键字驱动的自动化测试,关键字是它的核心。从关键字的类型来说,可以分为系统关键字和用户关键字两种

2、系统关键字通常都是来源于测试库

3、用户关键字更多的是来源于资源文件(当然也可以在测试套件中加用户关键字,但是不推荐这样)

4、系统关键字底层就是Python函数,而用户关键字其实和函数也没什么两样,完全可以像设计函数一样设计自己的用户关键字

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

 

用户关键字

新增用户关键字

步骤1:
1、在前面创建的资源文件上右键->选择"New User Keyword"

2、在"Name"文本框中输入关键字的名称,中英文都可以。Arguments可以先不管。点击"OK"按钮创建成功(这里创建的相当于只是创了一个空的关键字来占位)

Robot_Framework:基础_关键字


步骤2:查看关键字的Settings页面(这步可以不算在创建关键字的步骤里)

关键字的Settings页面和Test Case有些区别(这里面主要的就是Arguments和Return Value了)
    ⑴Documenttation:文档,该关键字的相关说明
    ⑵Arguments:关键字的传入参数
    ⑶Teardown:和Case的类似,设置关键字执行完成时的动作
    ⑷Timeoue:和Case的类似,运行超时的时间设置
    ⑸Return Value:关键字的返回值

Robot_Framework:基础_关键字

 

步骤3:编写PY脚本
1、根据业务来编写对应的PY脚本:如实现一些数字的相加功能

2、因为数字相加时不确定输入的数字有多少个,因此在写PY脚本时,选择一个列表来存需要相加的数字

def Add(numList):
    num = 0
    for number in numList:
        num = int(number) + num #RF中输入的为字符串,因此需要转换下
    return num


步骤4:关联PY脚本

1、因为关键字是位于资源文件下的,因此选择对应的资源文件并切换到其下的"Edit"页面

2、点击"Library"按钮->弹出脚本选择对话框->点击"Browse"选择对应的PY脚本路径(关键字关联的是PY脚本,因此导入的是Library)

4、成功导入PY脚本后,脚本路径显示为黑色(红色时表示未成功,不过也有例外)。下图中其他三项可以不管

Robot_Framework:基础_关键字


步骤5:设置关键字
1、选择要创建的关键字并切换到其下的"Edit"页面

2、在Arguments和Return Value下填写关键字(函数)需要传入的参数变量和需要返回的返回值变量(其他项可以选填)

3、因为我们的PY函数接收的是一个参数(将列表作为一个值传入),因此这里设置参数时用的是Scalar型变量(RF中设置的参数个数要与PY函数设置的参数个数对应,不然会报错)

4、一般来说关键字的格式都是:返回值    PY函数    函数参数....(关键字设置成功了可以看到函数名是蓝色的)

Robot_Framework:基础_关键字

 

步骤6:导入资源

1、因为这里创建的关键字所在资源文件属于外部资源文件,因此在使用时需要导入对应的资源文件,才能使用该资源文件下的关键字

2、选择将要创建测试用例所在的Test Suite并切换到"Edit"页面,点击"Resource"按钮导入资源

3、这个例子中测试用例(suite)关联的是资源文件,因此是通过"Resource"导入的。当然若测试用例直接用的是PY函数(没有封装成关键字的PY函数,就需要通过Library导入)

Robot_Framework:基础_关键字

 

步骤7:调用关键字

1、创建一个关键字:因为该关键字是的参数是一个列表,因此需要先创建一个列表

2、用例的意思为:
    ⑴使用RF自带关键字"create list"创建一个列表,并将创建的列表赋值给变量"${数字列表}"(这里需要注意的是:要使用Scalar型变量,不能使用List型变量,因为这个列表是作为一个值传递给PY脚本的)
    ⑵将上一步创建的列表变量"${数字列表}"作为参数传递给关键字"加法_补充",并将关键字的返回值赋值给变量"${和}"(调用关键字和设置关键字的格式差不多:返回值在左边、函数(关键字)在中间、参数在右边)
    ⑶最后通过关键字"log"打印上一步关键字的返回值"${和}"

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

 

 

关键字参数补充

RF中关键字的参数类型也有多种类型,如可以看下Log和Set Variable关键字的参数

Robot_Framework:基础_关键字

Robot_Framework:基础_关键字

 

参数分类

从这两个关键字的参数可以看到,常用的参数其实和变量也是相关的,主要就是Scalar变量和List变量。而从参数分类来说,一般就是3种:必填参数、非必填(默认)参数和List参数


必填参数

Log关键字里面的第一个参数message就是必填参数,只要是这种参数(后面没有默认值的)就是必填参数,即在调用时必须传入正确个数的参数

例:创建拥有两个必填参数的关键字
1、关键字拥有两个或以上的参数时:参数之间使用"|"进行分割

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

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

Robot_Framework:基础_关键字

 

选填参数

1、Log关键字里的第二个参数level=INFO就是选填参数(默认值参数),主要是因为它有一个默认值

2、默认值用"="加上值来设置,如果想默认为空,只写等号也是可以的

3、默认值的意思是:在调用这个关键字时,如果不给这个关键字的默认参数传值,那么就使用默认值作为参数的值;如果传了值则使用传入的值作为参数

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

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

例:定义一个含有默认参数的关键字
1、PY脚本为

def Add(numberList,big=100):
    num = 0
    for number in numberList:
        num = number + num
    return num + big

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

Robot_Framework:基础_关键字

 

List变量

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

例:创建参数为List变量的关键字

1、PY脚本

def Add1(num_A,num_B,*args):
    num = 0
    for number in args:
        num = int(number) + num
    return num + int(num_A) + int(num_B)

2、关键字设置
    ⑴RF中在设置参数为List型时:需要使用@标识,@标识标识可变参数
    ⑵PY脚本中设置可变参数使用*号
    ⑶下面测试用例的意思为:创建一个列表并复制给变量@{list}(该变量为List型),再将变量@{list}作为参数传递给关键字"加法_随机",将关键字"加法_随机"的返回值赋值给变量@{和},其他关键字又可以继续使用这个变量

Robot_Framework:基础_关键字
Robot_Framework:基础_关键字

 

 

返回值

1、因为传入参数的时候可以用单值变量,也可以用List变量,那么在Return Value时也可以用单值变量和List变量

2、在将返回值赋值给变量时,一定要弄清楚变量的类型,如果弄错了变量类型,那么在运行时就回出错

例1:
PY脚本如下:函数接收的是一个列表参数(列表是作为一个值传入的)

def Add(numList,big=100):
    num = 0
    for number in numList:
        num = int(number) + num #RF中输入的为字符串,因此需要转换下
    return num + int(big)

测试用例
    测试用例中将创建的变量赋值为List类型:列表中有几个参数,就有几个参数(但是PY函数接收的是一个参数)

    ⑵下面用例之所以运行报错是因为:关键字"加法_列表"接收的是一个列表参数,但是传进来的参数@{list}是多个参数(List变量是可变参数:有几个元素就是有多少个参数)

Robot_Framework:基础_关键字
Robot_Framework:基础_关键字

 

多个返回值

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

2、知道返回值的个数比较重要,如果不确定返回值的个数,就有可能出现报错情况,因此最好使用List变量或单个变量来取值,避免出现返回值个数少于取值变量个数的情况

例:

PY脚本:Python脚本可以以列表、元组等形式一次性返回多个值

def Sub(a,b):
    a = int(a)
    b = int(b)
    x = a - b
    y = a + b
    return x,y
x1 = Sub(3,1)#未分片赋值的话,就是一个元组,一个变量对应所有值组成的元组
print(x1)

x1,y1 = Sub(3,1)#分片赋值,一个变量对应一个值
print(x1,y1)

"""
(2, 4)
2 4
"""

 

关键字设置

Robot_Framework:基础_关键字

 

测试用例

由运行结果可以看出:如果关键字的返回值只使用了一个变量来承接的话,就是一个由所有返回值组成的列表。如果使用对应个数的变量来承接返回值的话,就是一个变量对应一个值。至于返回值变量的类型由@或$确定

Robot_Framework:基础_关键字
Robot_Framework:基础_关键字

 

 

相关标签: RF 关键字