qidao123.com技术社区-IT企服评测·应用市场
标题:
Robot Framework:一篇文章搞定Web、API、数据库主动化测试
[打印本页]
作者:
西河刘卡车医
时间:
2025-5-4 15:02
标题:
Robot Framework:一篇文章搞定Web、API、数据库主动化测试
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} # 输出 user123@example.com
复制代码
典型应用场景与示例
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/
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/)
Powered by Discuz! X3.4