Robot_Framework:基础_关键字

资源文件

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

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

 

创建资源文件

创建资源

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

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

Robot_Framework:基础_关键字_第1张图片

步骤2:

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

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

Robot_Framework:基础_关键字_第2张图片

 

资源文件的Settings设置项

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

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

Robot_Framework:基础_关键字_第3张图片

 

 

加载资源

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

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

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

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

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

Robot_Framework:基础_关键字_第4张图片

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

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

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

 

 

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中添加外部资源文件

 

 

Keyword 关键字

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

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

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

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

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

 

用户关键字

新增用户关键字

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

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

Robot_Framework:基础_关键字_第5张图片


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

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

Robot_Framework:基础_关键字_第6张图片

 

步骤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:基础_关键字_第7张图片


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

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

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

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

Robot_Framework:基础_关键字_第8张图片

 

步骤6:导入资源

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

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

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

Robot_Framework:基础_关键字_第9张图片

 

步骤7:调用关键字

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

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

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

Robot_Framework:基础_关键字_第10张图片

 

 

关键字参数补充

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

Robot_Framework:基础_关键字_第11张图片

Robot_Framework:基础_关键字_第12张图片

 

参数分类

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


必填参数

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

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

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

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

Robot_Framework:基础_关键字_第13张图片

 

选填参数

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:基础_关键字_第14张图片

 

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:基础_关键字_第15张图片
Robot_Framework:基础_关键字_第16张图片

 

 

返回值

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:基础_关键字_第17张图片
Robot_Framework:基础_关键字_第18张图片

 

多个返回值

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:基础_关键字_第19张图片

 

测试用例

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

Robot_Framework:基础_关键字_第20张图片
Robot_Framework:基础_关键字_第21张图片

 

 

你可能感兴趣的:(RobotFramework,RF,关键字)