robot-framework
Robot Framework 是基于 Python 的关键字驱动
一. 设计目标与工程价值
1.1 低代码门槛
测试用例采用表格化语法
1.2 统一领域语言
关键字体系为测试团队
1.3 关注点分离
将”测什么”与”怎么测”解耦
| 角色 | 职责 | 产出 |
|---|---|---|
| 测试工程师 | 设计测试场景与数据 | .robot 文件中的 Test Cases |
| 自动化工程师 | 实现关键字底层逻辑 | Python 函数 / 自定义 Keywords |
1.4 可维护性
底层实现变更
1.5 内置报告系统
每次执行自动生成 log.htmlreport.html
二. 执行机制
2.1 执行流水线
.robot 源文件
│ robot 解析器
▼
语法树(关键字调用序列)
│ 关键字名称查找(名称 → Python 可调用对象)
▼
函数/方法执行
│ 状态捕获(返回值、异常、耗时)
▼
结果序列化 → output.xml
│ XSLT 转换
▼
log.html / report.html
2.2 关键字映射规则
Robot Framework 不区分大小写Log To Consolelog to consolelog_to_console 解析为同一关键字
- 当前文件中
*** Keywords ***定义的用户关键字 - 通过
Resource导入的资源文件关键字 - 通过
Library导入的库关键字 Python 模块中的函数或类方法( )
2.3 执行语义
- 关键字按书写顺序同步串行执行
- 任意关键字抛出异常
Failure( ) 后续步骤立即终止, Fail-fast 语义( ) - 异常信息
执行耗时、 调用栈记录至、 output.xml
2.4 关键字来源层级
| 层级 | 来源 | 示例 |
|---|---|---|
| L0 内置库 | BuiltIn 模块 |
Log, Evaluate, Should Be Equal, Convert To String |
| L1 标准库 | 官方维护 |
Collections, String, DateTime, OperatingSystem, Process, Screenshot |
| L2 外部库 | 社区/第三方 |
SeleniumLibrary, RequestsLibrary, DatabaseLibrary, AppiumLibrary |
| L3 用户自定义 | 项目内 Python 模块或 .robot 资源文件 |
业务语义封装 |
三. 文件结构
*** Settings *** # 配置区:库引用、资源引用、全局设置
Library BuiltIn
Library SeleniumLibrary
Resource common.resource
Suite Setup 初始化测试环境
Suite Teardown 清理测试环境
*** Variables *** # 变量区:静态数据、环境参数
${BASE_URL} https://example.com
@{USERS} admin operator viewer
&{DB_CONFIG} host=localhost port=5432
*** Test Cases *** # 用例区:以关键字调用序列描述测试场景
验证登录成功
[Tags] smoke login
[Setup] 打开登录页
输入用户名 admin
输入密码 123456
点击登录按钮
页面应显示内容 欢迎回来
[Teardown] 关闭浏览器
*** Keywords *** # 关键字区:可复用的测试步骤封装
输入用户名
[Arguments] ${username}
Input Text id=username-field ${username}
3.1 四区语义
| 区域 | 标记 | 作用 | 是否必选 |
|---|---|---|---|
| Settings | *** Settings *** |
导入库 |
可选 |
| Variables | *** Variables *** |
声明全局变量 | 可选 |
| Test Cases | *** Test Cases *** |
定义测试用例 | 必选 |
| Keywords | *** Keywords *** |
定义用户关键字 | 可选 |
四. 执行命令
# 单文件
robot tests/login.robot
# 目录(递归执行所有 .robot 文件)
robot tests/
# 按标签筛选
robot --include smoke tests/
robot --exclude unstable tests/
# 指定输出目录
robot --outputdir results/ tests/
# 并行执行(需安装 pabot)
pabot --processes 4 tests/
五. 与同类工具对比
| 维度 | Robot Framework | pytest | Selenium |
|---|---|---|---|
| 定位 | 关键字驱动测试框架 | Python 通用测试框架 | 浏览器自动化库 |
| 抽象层级 | 高 |
低 |
低 |
| 编写门槛 | 低 | 中 | 中 |
| 自然语言表达 | 原生支持 | 依赖注释/BDD 插件 | 不支持 |
| 内置报告 | HTML 可视化报告 | 依赖插件 |
无 |
| 扩展方式 | 关键字封装 / Python 库 | Fixture / Plugin | 直接调用 API |
| 适用场景 | 端到端验收测试 |
单元测试 |
Web UI 操作 |
关系
Robot Framework ← 用例编排层
│
SeleniumLibrary ← 适配层(Robot Framework 关键字 ↔ Selenium API)
│
Selenium WebDriver ← 浏览器控制层
六. 适用场景判断
适用
- Web UI 端到端验收测试
- HTTP API 自动化测试
( RequestsLibrary) - 跨多系统的业务流程编排测试
- 需要非开发人员参与的测试项目
- 对可视化报告有明确需求的场景
不适用
- 单元测试
推荐( pytest/unittest) - 性能测试
推荐( JMeter/Locust) - 复杂算法的正确性验证
- 需要高频执行
毫秒级( 的场景) - 纯开发团队且无跨部门沟通需求的项目