惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
NISL@THU
NISL@THU
E
Exploit-DB.com RSS Feed
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
K
Kaspersky official blog
Project Zero
Project Zero
Cisco Talos Blog
Cisco Talos Blog
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
S
Schneier on Security
G
GRAHAM CLULEY
The Hacker News
The Hacker News
T
Threat Research - Cisco Blogs
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy & Cybersecurity Law Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
T
Tor Project blog
AWS News Blog
AWS News Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
爱范儿
爱范儿
P
Privacy International News Feed
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
S
Securelist
G
Google Developers Blog
The Last Watchdog
The Last Watchdog
Google Online Security Blog
Google Online Security Blog
美团技术团队
F
Fortinet All Blogs
小众软件
小众软件
Recorded Future
Recorded Future
V
Visual Studio Blog
B
Blog RSS Feed
H
Help Net Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
Blog — PlanetScale
Blog — PlanetScale
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
Martin Fowler
Martin Fowler
Latest news
Latest news
Spread Privacy
Spread Privacy
H
Heimdal Security Blog

博客园 - 小海海宁宁

从0到1:使用Schemathesis搭建API自动化测试框架实战 OpenAPI规范及自动化用例生成 playwright & selenium对Shadow DOM的处理 自动化平台质量体系建设(草稿) 【模板】邮件提测模板 研发测试质量规范(草稿) 自动化框架 - Q&A 自动化框架 - 核心模块使用指南 - Kafka 自动化框架 - 核心模块使用指南 - Kibana 自动化框架 - 核心模块使用指南 - Playwright 自动化框架 - 核心模块使用指南 - API 自动化框架 - 核心功能使用指南 - 动态值生成 自动化框架 - 核心功能使用指南 - 数据处理模块 自动化框架 - 核心功能使用指南 - 数据校验模块 自动化框架 - 核心功能使用指南 - 用例过滤Tag使用 自动化框架 - 核心功能使用指南 - Excel测试用例编写 自动化框架 - 核心功能使用指南 - 配置文件使用指南 自动化框架使用说明 - 快速开始 Kibana如何添加可视化看板
自动化框架 - 核心功能使用指南 - 上下文值传递
小海海宁宁 · 2026-03-09 · via 博客园 - 小海海宁宁
  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,...]