变量定义
赋值:占位符${} + 变量名test来表示这是一个变量,获取该变量同样如此
# 直接赋值
- ${t1} = 1
- ${t2} = '2'
- ${t3} = "3"
- ${t4} = True
- ${t5} = False
- ${t6} = None
- ${t7} = [1,2,3]
- ${t8} = {'key':'value'}
# 间接赋值,其他关键字返回
- ${t9} = find_elements_by_id()
注意:组合数据类型比如列表和字典里面,不支持多重嵌套,如果有复杂的数据,建议通过 data.yaml
文件配置
- ${t7} = [1, 2, [1, 2, 3]] # 不支持
- ${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.yaml
下 variable
、 resource
获取变量值