1. 使用场景

在自动化测试中,上下文值的管理和传递是非常重要的功能。上下文值可以帮助我们在不同的测试步骤中共享数据,提高测试的灵活性和复用性。
  1. 设置用例级别变量

在测试用例中,用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 引用存储的变量值。
  1. 设置全局变量(同一个Excel)

和上述一致,区别是在operation中使用save_as_global
  1. 存储步骤返回值到变量中

在一个测试步骤执行完成后, 如果有返回值,可以存储在变量中,供给下一步使用
举例:
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”将会存储结果的返回值到变量中。
  1. 变量取值

变量路径格式如下:
@变量名.类型:路径或操作方式
例子:
@result.json: data.data.msg
其中:
@result:变量名,以 @ 开头。
上述例子, result为一个json类型的变量(比如存了API响应结果),希望取值data中的msg字段
注意:路径和操作方式,尽量避免使用$ @ 和%%
  1. 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
  1. 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 键的值。注意,如果键名包含特殊字符,需要使用方括号语法。
 
  1. 表格类型变量取值(进行中)

- 单个单元格: @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,...]
 
posted on 2026-03-09 10:50  小海海宁宁  阅读(17)  评论(0)    收藏  举报