Robot Framework关键字,变量,循环

Robot Framework关键字,变量,循环

关键字的使用

RF的官方文档

  • http://robotframework.org

  • library里面

    *** Test Cases ***
    测试1
    ${var} set variable hello #给var赋值变量为hello set variable是关键字
    Should Be Equal ${var} helle #比较var和helle是不是相等。

    *** Test Cases ***
    测试1
    ${var} set variable hello #数字也会转化成字符串
    Should Be Equal ${var} helle 变量不是hello #msg缺省是none,添加了msg值,对错误信息可以看的更加清晰

    结果: 变量不是hello: hello != helle

    *** Test Cases ***
    测试1
    ${var} set variable 这是日志里面要记录的内容
    Log ${var} #会把变量的值打印到日志里面

常用关键字

  • Import Library #用的比较少,一般是一个case引用一个

  • Should Be Equal #相等

  • Should Contain #包含

    扫描二维码关注公众号,回复: 4282391 查看本文章
  • set variable #设置变量

  • log to console #直接打印到控制台的

  • log #打印到log文件

  • sleep #1d 睡一天,1m 睡一分钟,默认是秒,可以不写

  • convert to integer #转化成整型

  • convert to number #转化成浮点型整数

*** Test Cases ***
验证

${num}=  convert to integer   32        #把32转化成整形       结果32
log to console   ${num}

${num2}=  convert to Number   32        #把32转化成浮点型     结果32.0
log to console   ${num2}

log to console      ${32}           #用数字变量。可以直接转化成数字整型         结果32
log to console      ${32+4*6}       #也可以像py里面的数字表达式     结果56






*** Test Cases ***
测试1
    Should Be Equal   10    010           #字符串对象比较,结果是False
    Should Be Equal As Integers  10  010  #转换成数字对象比较,结果是true。传给关键字的时候,是字符串。在关键字内部转成整数的

rf里面的should be true关键字,会传递给py里面的eval()函数比较。
eval(“4+8”) #结果12 eval()更智能的识别表达式
验证 should be true
*** Test Cases ***
验证

${num}=  convert to integer  20     #把20转化为一个整型
should be true    ${num}>19         #等价于python里面eval("20>19")   ${num}本身是整型,后面>19又会变成字符串。should be true会把它转化成eval函数:eval("20>19")是ture。传递给should be true的是"20>19",相当于eval("20>19")是ture。

验证 should be true
*** Test Cases ***
验证

${str1}=  set variable  hello       #设置变量,rf里面的字符串是不需要加“”的
should be true   ${str1}==hello     #NameError: name 'hello' is not defined。${str1}的内容是hello,hello == hello,交给should be true的时候就是调用python里面的eval()函数。相当于eval(“hello == hello”) python里面也会报错。name 'hello' is not defined。hello是当做变量的

验证 should be true

*** Test Cases ***
验证

${str1}=  set variable  hello
should be true   '${str1}'=='hello'     #'${str1}'是把变量里面的值取出来,然后“”变成str类型。然后两个字符串相比。eval(“"hello "== "hello"”) 结果pass

验证 should be true
*** Test Cases ***
验证

${str1}=  set variable  hello
should be true   $str1=='hello'     #结果pass,这种方式是直接引用变量,$str1是变量名,比如a。$str1[2],或$str1[“key”]和python一样,列表和字典用法

# s t r 1 {str1}取的是变量的值,不加 str1取的变量的值

**

认识测试库

**
通常,关键字是由测试库提供的
测试库就是python模块文件
python测试库里面的关键字实现方式

  • 类的方法

  • 函数

  • RF脚本使用函数名,方法名,大小写不敏感

RF如何发现库的路径的

  • 和python程序一致,sys.path

有参数的关键字,传参的方法

*** Settings ***
Library           mylib3

*** Test Cases ***
测试
    ${var1}         set variable     123          #通过关键字设置变量123
    printarg        ${var1}             #printarg是在mylib3里面定义的函数,${var1}是传的字符串。直接在关注简直后面填参数就行了

    ${var2}         convert to integer     123          #通过关键字转化成整型123
    printarg        ${var2}             #这里传了一个整型的参数

    ${var2}         convert to integer     23          #通过关键字转化成整型123
    printarg        ${var2}         hello       #这里传了一个整型的参数和一个字符串的参数

库的导入

  • 除了builtin库,无需导入声明 #类似于python中的内置库,无需导入申明就可以使用

  • 其他库必须要声明导入 #在RF中导入库的时候,库的名字是大小写敏感的

  • 库的导入方式

     在用例中使用关键字import library导入
     在settings表中声明导入
    

RF中的变量
RF中的变量,实际上就是一个Python变量
它指向一个python对象
RF变量对应的是什么Python对象,就是什么类型的对象

RF中,对变量有什么不用的用法

Scalar方式(最常用的)

${var}          #以$符{}加变量名字定义的变量,传递给关键字作为参数使用的时候,就是直接把这个变量所对应的python对象传递给关键字的函数。是数字就是传数字,是字符串就传字符串,列表就是列表,字典就是字典
    	直接把变量所对应的Python对象传递给关键字 对应的函数

List方式

@{var}
        	展开的List中的每个元素,作为多个参数传入

Dictionary方式

&{var}
        	展开的Dict中的每个元素,作为多个参数传入

访问环境变量 %{env_var}

*** Settings ***
Library           mylib3


*** Test Cases ***
验证
Printarg         %{path}           #打印path环境变量

解释Scalar方式:
#验证Scalar方式传进去的是什么,就是什么
#模块mylib3中的函数,下面rf中调用

#def returnlist():
#    return [1,2,3]
#
#def returndict():
#    return {
#        'ele1' : 'male',
#        'ele2' : 'female'
#    }

验证Scalar方式传进去的是列表,就是列表

*** Settings ***
Library           mylib3


*** Test Cases ***
验证
    ${var1}=  returnlist
    Printarg     ${var1}             #传递给Printarg关键字的参数就是[1,2,3]

验证Scalar方式传进去的是字典,就是字典

*** Settings ***
Library           mylib3


*** Test Cases ***
验证
    ${var1}=  returndict
    Printarg     ${var1}             ##传递给Printarg关键字的参数就是{ 'ele1' : 'male','ele2' : 'female'}

验证Scalar方式传进去的是组合的字符,就是字符串

 *** Settings ***
    Library           mylib3
    
    
    *** Test Cases ***
    验证
        ${var1}=  returnlist
        Printarg     54${var1}             #如果这样传。传递给Printarg关键字的参数54[1,2,3],是字符串

List方式(@{var})
展开的List中的每个元素,作为多个参数传入

*** Settings ***
Library           mylib3


*** Test Cases ***
验证
    ${var1}=  returnlist
    Printarg     @{var1}             #如果这样传。传递给Printarg关键字的参数分别是1,2,3 是三个参数。

展开的List中的每个元素,作为多个参数传入。也可以像py一样取值

*** Settings ***
Library           mylib3


*** Test Cases ***
验证
    ${var1}=  returnlist            #定义的时候一般写${var1},关键看传参的时候这么传
    Printarg     @{var1}[1]             #如果这样传。传递给Printarg关键字的参数是第二个元素2

Dictionary方式
展开的Dict中的每个元素,作为多个参数传入

*** Settings ***
Library           mylib3


*** Test Cases ***
验证
    ${var1}=  returndict
    Printarg     &{var1}             ##传递给Printarg关键字的参数就是'ele1' : 'male'和'ele2' : 'female'这两个参数

展开的Dict中的每个元素,作为多个参数传入,也可以通过键取值

  *** Settings ***
    Library           mylib3
    
    
  *** Test Cases ***
    验证
        ${var1}=  returndict
        Printarg     &{var1}[ele1]            ##传递给Printarg关键字的参数就是'male'

**

RF用:FOR来实现循环

**
遍历List变量
IN RANGE的用法
一个检查学科的例子
经典方法
evaluate方法

*** Settings ***
Library  mylib3

*** Test Cases ***

Example 1
    :FOR    ${animal}  IN   猫   狗  猪
    \    Log To Console    ${animal}
    \    Log To Console    第二行
    Log To Console   循环外面

#结果:

第二行

第二行

第二行
循环外面

*** Settings ***
Library  mylib3

*** Test Cases ***

遍历list变量
    ${list}=     returnlist
    :FOR    ${index}    IN   @{list}            #这里用的是@{list}等价于1,2,3
    \    Log To Console    ${index}

#结果:
1
2
3

要循环固定的次数要range()

*** Settings ***
Library  mylib3

*** Test Cases ***

range用法
    :FOR    ${index}    IN RANGE    0    10            #这里range和py中的一样,可以直接写10,也可以0   10
    \    Log To Console    ${index}

#结果:
0
1
2
3
4
5
6
7
8
9

猜你喜欢

转载自blog.csdn.net/qq_37615098/article/details/84193284
今日推荐