Robot Framework 接口自动化测试框架详解
在接口自动化测试领域,Robot Framework 是一款绕不开的经典开源工具。它不仅适用于测试自动化,还可用于 RPA(机器人流程自动化)。该项目由专门的基金会支持,被众多行业头部企业广泛采用。凭借其开放性和高可扩展性,Robot Framework 能够与几乎所有工具无缝集成,帮助快速搭建灵活且强大的自动化测试方案。最关键的是,它完全免费,无需支付任何许可费用。
该框架的语法极为简洁,采用人类可读的关键字驱动模式。如果内置关键字无法满足需求,你还可以使用 Python、Java 或其他语言开发自定义库来扩展功能。其生态也非常丰富,社区贡献了大量独立的库与工具,拿来即用,非常方便。

基于 Robot Framework 构建接口自动化测试项目
本项目的技术栈非常轻量,核心仅包含以下三个组件:
- Robot Framework 框架本体
- RequestsLibrary 请求库
- HttpLibrary.HTTP 网络库
项目整体结构如下图所示:

项目设计说明
整个测试框架采用接口分层设计,核心理念是“接口数据与业务逻辑分离”。具体实施要点如下:
- 项目目录必须分层管理,避免文件混杂
- 接口测试用例需与数据、业务逻辑彻底解耦
- 测试用例支持不定参数传入,并可灵活控制执行顺序
目录结构解析
- 公共配置:存放配置文件、公用方法、公用函数
- 基础模块:封装请求函数及其他工具函数
- 功能组件:封装好的请求组件,便于复用
- 主干用例 & 项目用例:放置具体的接口测试用例脚本
安装 Robot Framework
首先安装框架本身,使用 pip 一条命令即可完成:
pip install robotframework
安装相关依赖库
接下来安装接口自动化测试所需的几个关键库:
pip install robotframework-requests
pip install robotframework-jsonlibrary
pip install robotframework-databaselibrary
各库作用说明:robotframework-requests 用于发送 HTTP 请求,robotframework-jsonlibrary 处理 JSON 数据解析,robotframework-databaselibrary 则用来与数据库交互。
请求方法封装
以下为封装好的常用请求方法示例:
* Settings *
Library RequestsLibrary
Library Collections
Library HttpLibrary.HTTP
Resource ../icmcenterApi/公共配置/公共配置_index.txt
* Keywords *
SendPost
[Arguments] ${root_url} ${uri} ${ParameterDict} ${DataType} ${header}
[Documentation] ${root_url}:接口的host;
... ${uri}:接口uri;
... ${dict}:接口传入参数,字典数据类型;
... ${DataType}:传入参数类型,如data等;
... ${header}:请求头,字典类型。
......响应数据为json类型。
......若为独立请求,可在请求结束后立即释放连接。
${RequestData} Create Dictionary
log ${ParameterDict.keys()}
: FOR ${key} IN @{ParameterDict.keys()}
\ set to dictionary ${RequestData} ${key} ${ParameterDict['${key}']}
log ${RequestData}
create session api ${root_url}
${response} post request api ${uri} ${DataType}=${RequestData} headers=${header} timeout=${timeout}
#将json的string类型的数据转成python的字典类型
Comment ${ResponseBody} To Json ${response.content}
sleep ${sleepTime}
log ${response.text}
[Return] ${response.text}
SendGet
[Arguments] ${root_url} ${uri} ${ParameterDict} ${header}
[Documentation] 响应数据为json类型
${RequestData} Create Dictionary
log ${ParameterDict.keys()}
: FOR ${key} IN @{ParameterDict.keys()}
\ set to dictionary ${RequestData} ${key} ${ParameterDict['${key}']}
log ${RequestData}
create session api ${root_url}
${response} get request api ${uri} params=${RequestData} headers=${header} timeout=${timeout}
Comment ${ResponseBody} To Json ${response.content}
sleep ${sleepTime}
log ${response.text}
[Return] ${response.text}
re_session
[Arguments] ${host}
[Documentation] 创建会话
create session session ${host}
re_post
[Arguments] ${uri} ${ParameterDict} ${DataType} ${header}
[Documentation] 不创建会话,仅发送post请求;
... 响应数据为json类型
${RequestData} Create Dictionary
log ${ParameterDict.keys()}
: FOR ${key} IN @{ParameterDict.keys()}
\ set to dictionary ${RequestData} ${key} ${ParameterDict['${key}']}
log ${RequestData}
${response} post request session ${uri} ${DataType}=${RequestData} headers=${header} timeout=${timeout}
Comment ${ResponseBody} To Json ${response.content}
sleep ${sleepTime}
log ${response.text}
[Return] ${response}
re_get
[Arguments] ${uri} ${ParameterDict} ${header}
[Documentation] 不创建会话,仅发送get请求;
... 响应数据为json类型
${RequestData} Create Dictionary
log ${ParameterDict.keys()}
: FOR ${key} IN @{ParameterDict.keys()}
\ set to dictionary ${RequestData} ${key} ${ParameterDict['${key}']}
log ${RequestData}
${response} get request session ${uri} params=${RequestData} headers=${header} timeout=${timeout}
Comment ${ResponseBody} To Json ${response.content}
sleep ${sleepTime}
log ${response.text}
[Return] ${response}
创建新的测试用例
在测试套件中新建一个测试用例:

随后填入对应的接口信息:

请求机制详解
首先理解 Session(会话)概念。在 Robot Framework 中创建一个 Session,相当于为后续请求搭建了一个“容器”。之后所有请求都可以在这个会话内发起,优势明显:
- 保持状态——登录成功后,该会话中的所有请求都会自动携带登录态。
- 默认携带配置——会话内设置的 headers 和 cookies 会自动附加到每个请求,省去重复编写。

进入会话界面,填写基础信息:

填写完成后可直接发送请求:

也可以在已建立的 Session 上继续发出请求:

选择自定义脚本,填入对应代码——三个接口的操作步骤完全一致:

创建测试用例并设置优先级
创建测试用例时,可以根据需要设置执行优先级:

开始执行接口测试
进入测试用例界面,选择“导入接口用例”:

右侧参数面板可设置运行环境、循环次数、循环延迟、遇到错误是否忽略等关键参数。点击运行按钮,即可实时查看可视化执行过程——运行百分比、通过率、失败率、未测数量一目了然。

测试完毕后可查看总耗时、平均接口响应时间、循环次数、断言数量等汇总统计。测试报告支持导出,方便与团队成员共享结果。

如需查看某个测试用例的详细数据,点击“更多详情”即可展开:

对于接口运行结果,还可以单独调试该步骤,极大方便问题定位:

