-
使用场景
在自动化测试中,上下文值的管理和传递是非常重要的功能。上下文值可以帮助我们在不同的测试步骤中共享数据,提高测试的灵活性和复用性。
-
设置用例级别变量
在测试用例中,用DataProcessor通过 Action "data_process" 操作中set_variable将
Params 中的值存储为变量,并在后续步骤中引用。模块配置data_process, 在yml中如下
data_process:
class_path: "src.modules.data.data_process.DataProcessor"
举例,将下列json设置为变量,存入变量var中
{
"tenantId": "TE17831554453625869",
"explicitIvrStatus": "false",
"explicitIvrMode": 1,
"encryptionType": 3,
"secretKey": "123456",
"cipherPrefix": "enc1_",
"initializationVector": "789123"
}
在测试用例表中,可以写如下步骤
| Description | Module | Action | Tag | Params | ParamsSetID |
| 设置变量 | data_process | data_process | regression, api,oah | oah_body |
测试数据表中的“oah_body” 变量
| ParamsSetID | ParamID | Name | Value | DataGroup | TestCaseID |
| oah_body | P1 | params | { "operation": "set_variable", "data": { "tenantId": "TE17831554453625869", "explicitIvrStatus": "false", "explicitIvrMode": 1, "encryptionType": 3, "secretKey": "123456", "cipherPrefix": "enc1_", "initializationVector": "789123" }, "saveAsVariable": "body" } |
1 | TC_OAH_API_Tenant_Base_Config_Edit |
在后续步骤中,可以通过
@body.string:value 引用存储的变量值。-
设置全局变量(同一个Excel)
和上述一致,区别是在operation中使用save_as_global
-
存储步骤返回值到变量中
在一个测试步骤执行完成后, 如果有返回值,可以存储在变量中,供给下一步使用
举例:
| Description | Module | Action | Tag | Params | ParamsSetID |
| get sign | oah_api | generate_sign | oah_sign |
测试数据表中的“oah_sign” 变量
以上例子为oah_api 调用generate_sign方法,generate_sign有参数 body,同时存储返回值到sign变量中
| ParamsSetID | ParamID | Name | Value | DataGroup | TestCaseID | |
| oah_sign | P1 | params | { "body": "@body.string:value", "saveAsVariable": "sign" } |
1 | TC_OAH_API_Tenant_Base_Config_Edit | |
调用Action 方法时候,如果传递的参数有“saveAsVariable”将会存储结果的返回值到变量中。
-
变量取值
变量路径格式如下:
@变量名.类型:路径或操作方式
例子:
@result.json: data.data.msg
其中:
@result:变量名,以 @ 开头。
上述例子, result为一个json类型的变量(比如存了API响应结果),希望取值data中的msg字段
注意:路径和操作方式,尽量避免使用$ @ 和%%
-
String 类型变量取值
如果是String类型, 格式为
@变量.string:转换操作
转换操作:对字符串值进行的转换操作,如 upper、lower 等。
举例将一个string的返回值存入变量@value中,期望取以下类型的值为:
-
upper:将字符串转换为大写。
- 举例 @value.string:upper
-
lower:将字符串转换为小写。
- 举例 @value.string:lower
-
value:保持原样。
- 举例 @value.string:value
-
title:将字符串转换为标题格式(每个单词首字母大写)。
- 举例 @value.string:title
-
capitalize:将字符串转换为首字母大写。
- 举例 @value.string:capitalize
-
strip:去除字符串首尾的空白字符。
- 举例 @value.string:strip
-
substr:start,end:截取子字符串,从 start 到 end。
- 举例 @value.string:substr:2,4
-
regex:pattern:使用正则表达式匹配字符串。
- 举例 @value.string:regex:w.*
-
split:delimiter:index:使用分隔符分割字符串,并获取指定索引的子字符串。
- @value.string:split: :1
-
replace:old:new:将字符串中的 old 替换为 new。
- @value.string:replace:world:universe
-
length:获取字符串的长度。
- @value.string:length
-
Json类型变量取值
变量路径格式如下:
@变量名.json:路径
说明:
@变量名:变量名,以 @ 开头。
类型:变量类型, json。
路径:用于逐级访问嵌套的字典。
解析变量路径:使用正则表达式 re.match 来解析变量路径,提取变量名、类型和路径。
获取变量值:从上下文中获取变量值。
路径示例
-
单级路径
- 举例 data
- 解释:访问 data 键的值。
-
多级路径
- 举例 data.user
- 解释:访问 data 键下的 user 键的值。
-
多级路径,包含数组索引
- 举例 data.users[0].name
- 解释:访问 data 键下的 users 列表中的第一个元素的 name 键的值。
-
多级路径,包含多个数组索引
- 举例 data.users[0].addresses[1].city
- 解释:访问 data 键下的 users 列表中的第一个元素的 addresses 列表中的第二个元素的 city 键的值。
-
多级路径,包含嵌套对象
- 举例 data.user.profile.bio
- 解释:访问 data 键下的 user 对象的 profile 对象的 bio 键的值。
-
多级路径,包含特殊字符
- 举例 data.user["profile.bio"]
- 解释:访问 data 键下的 user 对象的 profile.bio 键的值。注意,如果键名包含特殊字符,需要使用方括号语法。
-
表格类型变量取值(进行中)
- 单个单元格: @var.table:row=X,col=Y - 整行: @var.table:row=X - 整列: @var.table:col=Y - 行范围: @var.table:row=[X-Y] - 列范围: @var.table:col=[X-Y] - 多列: @var.table:col=[col1,col2,...]
浙公网安备 33010602011771号