Robot Framework简介与核心功能
什么是Robot Framework?
Robot Framework是一个通用的自动化测试框架,支持**关键字驱动(Keyword-Driven)和行为驱动开发(BDD)**模式。它通过自然语言风格的语法编写测试用例,使得测试脚本易于阅读和维护,甚至非技术人员也能参与其中。
核心功能亮点
- 多领域支持:覆盖Web、API、数据库、移动端、桌面应用等多种测试场景。
- 插件化扩展:通过第三方库(如SeleniumLibrary、RequestsLibrary)轻松扩展功能。
- 数据驱动测试:支持从外部文件(Excel、CSV)加载数据,实现参数化测试。
- 标签管理:通过标签分类测试用例,灵活选择执行范围。
- 自动化报告:生成详细的HTML报告和日志,便于结果分析与问题追踪。
- 跨平台运行:兼容Windows、Linux、macOS,无缝集成CI/CD工具(如Jenkins、GitLab CI)。
快速安装与环境搭建
前提
- 确保已安装Python 3.6+(推荐使用最新版本)。
- 使用
pip
包管理工具安装Robot Framework及其常用库。
安装步骤
# 安装Robot Framework核心库
pip install robotframework
# 安装Web测试库SeleniumLibrary
pip install robotframework-seleniumlibrary
# 安装API测试库RequestsLibrary
pip install robotframework-requests
# 安装数据库测试库DatabaseLibrary
pip install robotframework-databaselibrary
验证安装
在终端输入以下命令,若显示版本号则安装成功:
robot --version
编写测试用例:Web自动化示例
创建测试文件
新建一个.robot
文件(如baidu_search.robot
),编写以下内容:
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
Search for Robot Framework
Open Browser https://www.baidu.com Chrome
Input Text name=q Robot Framework
Press Keys name=q ENTER
Wait Until Page Contains Results
Close Browser
代码解析
- Settings:引入依赖库(如SeleniumLibrary)。
- Test Cases:定义测试步骤,使用关键字(如
Open Browser
、Input Text
)模拟用户操作。
运行测试
在终端执行命令:
robot google_search.robot
查看报告
执行完成后,生成report.html
和log.html
文件,详细展示测试结果与操作日志。
Robot Framework语法与关键字
测试文件结构
Robot Framework测试文件通常包含以下部分:
- Settings:引入库、资源文件或定义元数据。
- Variables:定义全局变量。
- Test Cases:编写具体的测试用例。
- Keywords:封装可复用的自定义关键字。
- Tasks(RPA场景):定义自动化任务。
关键字类型
- 内置关键字:框架原生支持,如
Log
(打印日志)、Should Be Equal
(断言相等)。 - 库关键字:来自第三方库,如
SeleniumLibrary
的Click Element
。 - 用户自定义关键字:通过组合现有关键字实现复杂逻辑。
变量使用
- 标量变量:
${var}
,用于存储单个值。 - 列表变量:
@{list}
,存储多个值。 - 字典变量:
&{dict}
,存储键值对。
示例:
*** Variables ***
${URL} https://example.com
@{CREDENTIALS} admin secret
*** Test Cases ***
Login Test
Open Browser ${URL} Chrome
Input Text id=username ${CREDENTIALS}[0]
Input Password id=password ${CREDENTIALS}[1]
常用功能与高级用法
数据驱动测试
通过[Template]
标签实现多组数据测试。
示例:验证不同用户的登录场景
*** Test Cases ***
Invalid Login Scenarios
[Template] Login With Invalid Credentials
invalid_user valid_pass Error: User not found
valid_user invalid_pass Error: Incorrect password
${EMPTY} ${EMPTY} Error: Username required
*** Keywords ***
Login With Invalid Credentials
[Arguments] ${username} ${password} ${error}
Input Text id=username ${username}
Input Password id=password ${password}
Click Button Login
Page Should Contain ${error}
标签管理
通过[Tags]
分类测试用例,灵活控制执行范围。
示例:
*** Test Cases ***
Search Product
[Tags] smoke search
# 测试步骤...
Checkout Process
[Tags] regression checkout
# 测试步骤...
运行指定标签的测试:
robot --include smoke tests.robot
并行测试
使用pabot
库加速测试执行:
pip install robotframework-pabot
pabot --processes 4 tests/
自定义库开发
通过Python编写自定义关键字库(示例):
# mylibrary.py
from robot.api.deco import keyword
class MyLibrary:
@keyword
def generate_email(self, username):
return f"{
username}@example.com"
在测试文件中引用:
*** Settings ***
Library mylibrary.py
*** Test Cases ***
Generate Test Email
${email}= Generate Email user123
Log ${email} # 输出 [email protected]
典型应用场景与示例
Web自动化测试(SeleniumLibrary)
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
Add Product to Cart
Open Browser https://shop.example.com Chrome
Input Text id=search Laptop
Click Element css=.search-button
Wait Until Page Contains Laptop
Click Element css=.add-to-cart
Element Should Contain css=.cart-count 1
Close Browser
API测试(RequestsLibrary)
*** Settings ***
Library RequestsLibrary
*** Test Cases ***
Get User Details
Create Session api https://api.example.com
${response}= GET On Session api /users/1
Status Should Be 200 ${response}
${json}= Set Variable ${response.json()}
Should Be Equal ${json["name"]} John Doe
数据库验证(DatabaseLibrary)
*** Settings ***
Library DatabaseLibrary
*** Test Cases ***
Check Orders Count
Connect To Database pymysql dbname=orders user=root password=secret
${count}= Row Count SELECT * FROM orders WHERE status='completed'
Should Be True ${count} >= 10
RPA自动化(RPA Framework)
*** Settings ***
Library RPA.Browser
*** Tasks ***
Download Report
Open Available Browser https://internal.site.com
Input Text id=username admin
Input Password id=password secret
Click Button Login
Download link=Monthly Report
Close Browser
集成CI/CD与最佳实践
与Jenkins集成
在Jenkins中配置Robot Framework插件,添加构建步骤:
robot --outputdir results/ tests/