zoukankan      html  css  js  c++  java
  • Robot Framework(12)- 详细解读 RF 的变量和常量

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦!

    https://www.cnblogs.com/poloyy/category/1770899.html

    常量的栗子

    常量就不多说了吧,大家都懂!直接看栗子

    上面 log 关键字后面跟的参数都是常量,且类型均是字符串【RF 里面,常量默认是字符串类型,如果需要整形、浮点数、列表,需要调用关键字来转换 or 生成】

    变量的介绍

    • RF中的变量,实质上就是一个Python变量,它指向一个Python对象
    • 所以RF变量对应的是什么Python对象,它就是什么类型的对象

    变量标识符

    {变量名}

     {} 就是变量标识符

    RF 的变量类型

    变量类型 变量中文 写法
    scalar 标量  ${SCALAR} 
    list 列表  @{LIST} 
    dict 字典  &{DICT}  
    环境变量 环境变量  %{ENV_VAR} 

    变量的作用就不说了哈,大家应该都知道~

    变量的注意事项

    • 不区分大小写: ${var} 和 ${VAR} 指向同一个对象
    • 变量名若有下划线和空格都会被忽略: ${my var}  或  ${myVar} 

    测试代码

     测试结果

    Scalar 变量

    特点

    • 当传递 Scalar 变量给关键字作为参数的时候, 就是直接把它所对应的 Python 对象类型传递给关键字对应的函数
    • 每个 List 变量和 Dict 变量,也是 Scalar 变量

    测试代码

    测试结果

    知识点

    • 在 Variables 表中定义变量,可以直接在变量后面跟值,不用加 set variable 
    • 给标量赋值,声明变量后面可加=,也可不加
    • 在 Test Cases 表中定义变量,声明变量之后,一定要接 set variable 或 set variable if 关键字,然后再接需要设置的值
    • 变量间,可以互相赋值

    List 变量

    List 变量的介绍

    如果一个标量的值是一个列表,或者类似列表的其它序列,可以将该变量作为列表变量使用,格式为 @{EXAMPLE}

    Test Case 表中定义列表变量的栗子

    测试结果

    测试代码分成了四部分

    1. 声明列表变量,有两种声明列表变量的方式,以及两种生成列表值的方式
    2. 打印列表
    3. 循环打印
    4. 获取列表长度

    我们来看看上述 RF 代码等价于 Python 的话,会是咋样的

    @{lists} 和 ${lists} 的区别

    • 列表变量也是标量的一种,只是值是列表,所以可以看成列表变量
    • ${lists} 可以看成是一个列表整体, @{lists} 可以看成整体拆成一个个单独的元素
    • ${lists} 在 Python 里面就是一个 list ,然后 @{lists} 就是展开其 lists 中的每个元素,作为多个参数传入,和 *args 一样效果,在Python 里叫可变参数【可看这篇博文:https://www.cnblogs.com/poloyy/p/12526592.html

    我们将它们等价到Python 里面去看,这样更好理解

    def printarg(*args):
        if len(args) == 0:
            print('** no args **')
        else:
            print('** args are **')
            print('-----------------')
            for one in args:
                print(repr(one))
            print('-----------------')
    
    
    # 等价于 RF 的写法:printarg  ${lists}
    printarg(lists)
    
    # 等价于 RF 的写法:printarg  @{lists}
    printarg(*lists)

    测试结果

    ** args are **
    -----------------
    [1, 2, 3, 4, 5]
    -----------------
    ** args are **
    -----------------
    1
    2
    3
    4
    5
    -----------------

    获取列表变量中的值

    一共两种获取的格式

    1.  ${变量名}[下标值] 
    2.  ${变量名[下标值]} 

    测试结果

    知识点

    • 系统也提示啦,我们应该用 ${list}[0] 这种格式来代替 @{list} 获取列表的某个值
    • 下标也是从 0 开始
    • 下标可以传变量 ${list}[${index}] 

    Dict 变量

    Dict 变量介绍

    如果一个标量的值是一个字典,可以将该变量作为字典变量使用,格式为  &{EXAMPLE} 

    Test Case 表中定义字典变量的栗子

    测试结果

    我们来看看上述 RF 代码等价于 Python 的话,会是咋样的

    &{dict} 和  ${dict} 的区别

    • 字典变量也是标量的一种,只是值是字典,所以可以看成字典变量
    • ${dict} 可以看成是一个完整的字典对象, &{dict} 可以看成整体拆成一个个单独的键值对
    • ${dict} 在 Python 里面就是一个  dict ,然后&{dict} 就是展开其 dict 中的每个键值对,作为多个参数传入,和 **kwargs 一样效果,在Python 里叫关键字参数【可看这篇博文:https://www.cnblogs.com/poloyy/p/12526592.html

    我们将它们等价到Python 里面去看,这样更好理解

    def printarg(**kwargs):
        if len(kwargs) == 0:
            print('** no kwargs **')
        else:
            print('** kwargs are **')
            print('-----------------')
            for k, v in kwargs.items():
                print(repr(k) + ':' + repr(v))
            print('-----------------')
    
    # 等价于 RF 的写法:printarg  &{dicts1}
    printarg(**dicts1)

    测试结果

    ** kwargs are **
    -----------------
    'name':'yy'
    'age':19
    -----------------

    获取字典变量中的值

    只有一种获取格式: ${dicts}[key] 

    测试结果

    知识点

    • 系统也提示啦,我们应该用 ${dicts}[key] 代替 &{dicts}[key] 
    • 键可以传变量 &{DICT}[${KEY}] 
    • 重点: ${dict.key} 会报错哦,不可取
  • 相关阅读:
    大于小于等于
    格助詞の「は」と「が」の使い分けを教えてください。
    【そもそも】
    日语邮件用语
    日本网址大全
    常用数据库语句
    测试用例管理工具-TestLink
    MySQL 下载与安装
    创建全文索引----SQLserver
    排序
  • 原文地址:https://www.cnblogs.com/poloyy/p/12939615.html
Copyright © 2011-2022 走看看