变量定义

赋值:占位符${} + 变量名test来表示这是一个变量,获取该变量同样如此

  1. # 直接赋值
  2. - ${t1} = 1
  3. - ${t2} = '2'
  4. - ${t3} = "3"
  5. - ${t4} = True
  6. - ${t5} = False
  7. - ${t6} = None
  8. - ${t7} = [1,2,3]
  9. - ${t8} = {'key':'value'}
  10. # 间接赋值,其他关键字返回
  11. - ${t9} = find_elements_by_id()

注意:组合数据类型比如列表和字典里面,不支持多重嵌套,如果有复杂的数据,建议通过 data.yaml 文件配置

  1. - ${t7} = [1, 2, [1, 2, 3]] # 不支持
  2. - ${t8} = {'key':{'key1':'value1'}} # 不支持

取值:如果变量值为列表或字典,可以指定index或者key来获取其中某一个元素的值

- keyDown(${7}[0], ${t8}['key'])

优先级

整个测试执行生命周期内,变量获取会尝试从多个地方获取值,所以具有一定优先级和有效范围

1.最高优先级,最小有效范围:for循环迭代值

# TestCast/common/common.yaml
- ${i} = 123
- ${lis} = [1, 2, 3]
- for ${i} in ${lis}:
    - test(${i})   # 优先取for循环内的${i},该${i}的有效范围只在for循环中, 值分别为:1,2,3
- test(${i}) # for循环执行完毕,取最开始定义的${i},值为:123

2.第二优先级:用例内定义的变量,有效范围只在该条用例中,其他用例无法访问
3.第三优先级: 自定义关键字中 input 中定义的变量

# Common/Android/common.yaml
login:        
 description: Android端登录
 input: [key,value]  # key: admin, value: 123456
 output: []
 steps:
    - ${key} = 123
    - click(${key})  # input 中变量优先级比${key} = 123优先级小,所以该处取到的值为:123

4.最低优先级,最高有效范围:如果以上三种均未获取该变量,会尝试从 data.yamlvariableresource 获取变量值