robot-framework

Table Of Contents

  1. robot-framework
    1. 一. 设计目标与工程价值
      1. 1.1 低代码门槛
      2. 1.2 统一领域语言
      3. 1.3 关注点分离
      4. 1.4 可维护性
      5. 1.5 内置报告系统
    2. 二. 执行机制
      1. 2.1 执行流水线
      2. 2.2 关键字映射规则
      3. 2.3 执行语义
      4. 2.4 关键字来源层级
    3. 三. 文件结构
      1. 3.1 四区语义
    4. 四. 执行命令
    5. 五. 与同类工具对比
    6. 六. 适用场景判断

robot-framework

Robot Framework 是基于 Python 的关键字驱动Keyword-Driven自动化测试框架其核心设计思想是在测试逻辑与具体实现之间建立抽象层通过关键字Keyword映射机制将表格化用例语法转换为底层代码执行

一. 设计目标与工程价值

1.1 低代码门槛

测试用例采用表格化语法Tabular Syntax屏蔽编程语言细节非开发角色可直接阅读编写用例无需具备 Python 或底层工具链知识

1.2 统一领域语言

关键字体系为测试团队开发团队业务方提供共享的领域特定语言DSL测试用例本身即为可执行文档消除”用例文档”与”自动化代码”之间的翻译损耗

1.3 关注点分离

将”测什么”与”怎么测”解耦

角色 职责 产出
测试工程师 设计测试场景与数据 .robot 文件中的 Test Cases
自动化工程师 实现关键字底层逻辑 Python 函数 / 自定义 Keywords

1.4 可维护性

底层实现变更如页面 DOM 结构调整仅限于关键字内部修改所有引用该关键字的测试用例无需变更修改点数量降为 O(1)

1.5 内置报告系统

每次执行自动生成 log.html细粒度执行日志report.html聚合级测试报告支持筛选搜索标签分组零配置


二. 执行机制

2.1 执行流水线

.robot 源文件
  │  robot 解析器
  ▼
语法树(关键字调用序列)
  │  关键字名称查找(名称 → Python 可调用对象)
  ▼
函数/方法执行
  │  状态捕获(返回值、异常、耗时)
  ▼
结果序列化 → output.xml
  │  XSLT 转换
  ▼
log.html / report.html

2.2 关键字映射规则

Robot Framework 不区分大小写空格与下划线等价Log To Consolelog to consolelog_to_console 解析为同一关键字查找顺序

  1. 当前文件中 *** Keywords *** 定义的用户关键字
  2. 通过 Resource 导入的资源文件关键字
  3. 通过 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 外部库 社区/第三方pip 安装后导入 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 *** 导入库资源文件定义 Suite/Test 级别的 Setup/Teardown 可选
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 通用测试框架 浏览器自动化库
抽象层级 DSL 代码 API
编写门槛
自然语言表达 原生支持 依赖注释/BDD 插件 不支持
内置报告 HTML 可视化报告 依赖插件如 pytest-html
扩展方式 关键字封装 / Python 库 Fixture / Plugin 直接调用 API
适用场景 端到端验收测试业务流程测试 单元测试集成测试 Web UI 操作通常作为 RF/pytest 的底层驱动

关系Robot Framework 与 pytest / Selenium 为协作关系非替代关系Selenium 作为底层浏览器驱动pytest 可用于验证 Robot Framework 自定义库的逻辑典型分层为

Robot Framework     ← 用例编排层
    │
SeleniumLibrary     ← 适配层(Robot Framework 关键字 ↔ Selenium API)
    │
Selenium WebDriver  ← 浏览器控制层

六. 适用场景判断

适用

  • Web UI 端到端验收测试
  • HTTP API 自动化测试RequestsLibrary
  • 跨多系统的业务流程编排测试
  • 需要非开发人员参与的测试项目
  • 对可视化报告有明确需求的场景

不适用

  • 单元测试推荐 pytest / unittest
  • 性能测试推荐 JMeter / Locust
  • 复杂算法的正确性验证
  • 需要高频执行毫秒级的场景
  • 纯开发团队且无跨部门沟通需求的项目