3-关键字、导入库、变量、循环

一、关键字

关键字使用方法查看

1、查看官方档 :https://robotframework.org/#libraries
2、查看源码方式(ctrl+点击关键字)

常用关键字

1、log、log to console、log many 可变关键字

*** Test Cases ***
常用关键字-log
    log  我来自log
    log to console  我来自log to console
    log many  我  是  小仙女   #内容中间有超过一个空格时,会认定空格前后是两个参数

执行robot文件后,如下图所示:
控制台只会显示log to console 的内容,而log、log many只会在日志中显示
在这里插入图片描述
在这里插入图片描述

建议: 在调试过程中,如果遇到log很长的时候,建议使用log,这样会在日志中全部显示,且可视性比较好

log many 的参数中如果本身包含一个以上的空格,处理方法:

  • 临时方法:从第二个空格处前加\修饰,但是一个反斜杠只能修饰一个空格
  • python处理法

2、传递参数:set variable、convert to integer

*** Test Cases ***
常用关键字-set variable
    ${name}  set variable  xianyu   #类似于python中定义的 name = 'xianyu'
     ${age}  convert to integer  18  #定义一个整数变量
    log to console  ${name}
    log to console  ${age}

注意:

  • set variable 后面的常量(无论是数字、列表、字典等) 在RF中统统都是str的格式,所以都不需要加引号
  • 补充:convert to number 定义浮点数、convert to boolean 定义一个布尔值

3、sleep

*** Test Cases ***
sleep
    log to console  3秒后见
    sleep 3
    log to console  又见了

4、断言:should be equal、should be equal as integers、should be true

*** Test Cases ***
断言1
    ${expect}  set variable  2021
    should be equal  ${expect}  ${2021}   

上面代码执行是不会通过的,因为 ${2021}表示int格式的2021,而变量expect是str格式2021,格式不一样,所以比较未通过

*** Test Cases ***
断言2
    ${expect}  set variable  2021
    should be equal as integers  ${expect}  2021

此时执行会通过,因为should be equal as integers会把${expect}和2021都转为int来比较,所以会通过
在这里插入图片描述

*** Test Cases ***
断言3
    ${expect}  set variable  hello
    should be true  $expect=='hello'

注:should be true <python表达式>,如果python表达式中有变量,那么需要给变量去{}

二、认识测试库

导入其他模块方式:

  • 路径导入法:Library get_type.py
  • 模块导入法:Library get_type  或者文件.包的形式,与python类似
    注:如果get_type不在当前路径下执行时,需要添加模块所在目录到pythonPath中,如
    robot -P …/day1 test.robot

在这里插入图片描述

三、变量

1、列表类型

*** Test Cases ***
列表类型
    ${list}  create list  a  b  c
    log to console  ${list}  # 控制台打印结果:['a','b','c']
    log many  ${list}       # log打印结果:['a','b','c']
    log many  @{list}    # 相当于解包,log打印三条结果:分别是a b c
    log many  ${list}[0]  # 也可以是${list[0]},log打印结果:a

在这里插入图片描述

2、字典类型

*** Test Cases ***
字典类型
    ${dict}  create dictionary  a=1  b=2  c=3
    log to console  ${dict}
    log many  ${dict}
    log many  &{dict}  #解包
    log many  @{dict}  # 解出key
    log many  ${dict}[a]

打印结果,如下:
在这里插入图片描述

四、循环

循环1
    FOR  ${i}  IN  a  b  c  d
    log to console  循环打印:${i}
    END   # 循环结束

循环2
    ${list}  create list  a  b  c
    FOR  ${i}  IN  @{list}
    log to console  循环打印:${i}
    END

循环3
    FOR  ${i}  IN RANGE  5    # 从0开始到4结束
    log to console  循环打印:${i}
    END

循环4
    FOR  ${i}  IN RANGE  1  5      # 从1开始到4结束
    log to console  循环打印:${i}
    END

循环5
    FOR  ${i}  IN RANGE  1  5  1   # 从1开始到4结束,步长为1
    log to console  循环打印:${i}
    END

执行结果:
在这里插入图片描述

五、判断

1、if

关键字:run keyword if <condition表达式> 执行内容

*** Test Cases ***
条件判断
    run keyword if  1==0  log to console  错误
    run keyword if  1==1  log to console  正确

在这里插入图片描述
由上可知,如果条件不成立时,也不会执行失败,这与另一个 参数同为condition的should be true 不一样,should be true为断言类型,不通过时就会执行失败

补充:如果条件表示式后面的内容太长时,可采用如下方法:

*** Test Cases ***
条件判断
    run keyword if  1==0  log to console  错误
    run keyword if  1==1  
    ...  log to console  正确    # 换行后,加...且其后加两格以上空格

2、if-else

条件判断2
    run keyword if  1==0  log to console  正确
    ...  ELSE  log to console  错误

执行结果:
在这里插入图片描述

3、if-else if

条件判断3
    run keyword if  1==0  log to console  错误
    ...  ELSE IF  1==1  log to console  正确
    ...  ELSE  log to console  都不对

在这里插入图片描述

4、嵌套

条件判断4
    run keyword if  1==1
    ...  run keyword if  2==2
    ...        run keyword if  3==3  log to console  三层都对

执行结果:
在这里插入图片描述
实测不好用!不推荐!!如果使用嵌套的话,用python写一个吧,再调用

5、FOR循环判断

getScoreLevel.py文件

from robot.api import logger

def check_score(score):
    if 90<int(score)<100:
        logger.console('scoreLevel:A')
    elif 60<int(score)<90:
        logger.console('scoreLevel:B')
    elif 0<int(score)<60
        logger.console('scoreLevel:C')
*** Settings ***
Library  getScoreLevel.py
Library  Dialogs

*** Test Cases ***
条件判断5
    FOR  ${i}  IN RANGE  9999
    ${score}  get value from user  请输入分数(q退出,c继续):
    exit for loop  $score=='q'       # exit for loop相当于break
    continue for loop  $score=='c'   # continue for loop相当于break
    check score  ${score}
    END

代码解读:
因为RF中没有python中的while语法,所以只能使用FOR+判断在足够多的循环次数下达到相同效果。代码运行时会弹出下面对话框(使用get value from user关键字调用)
在这里插入图片描述
输入的0-100的数字时,控制台会显示getScoreLevel.py文件对应的输出信息;
当输入q时,退出循环,且正常退出,控制台不会显示Fail;
当输入c时,继续循环,对话框再一次显示出来

六、evaluate <python表达式> 执行python语句

evaluate <python表达式>用来计算python表达式,不建议使用evaluate运行复杂的代码,如有需要交给python代码

evaluate练习
    ${list}  evaluate  [i for i in range(5)]
    log  ${list}
    evaluate  print('hello')   #print 的内容只在log中显示
    

执行结果:
在这里插入图片描述
evaluate底层实现逻辑是python的eval函数

eval()不支持赋值操作,如:

evaluate练习
    ${a}  set variable  123
    evaluate  $a=1
    log  ${a}

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值