论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
数据库
›
Mysql
›
Robot Framework:一篇文章搞定Web、API、数据库主动化 ...
Robot Framework:一篇文章搞定Web、API、数据库主动化测试 ...
西河刘卡车医
论坛元老
|
2025-5-4 15:02:20
|
显示全部楼层
|
阅读模式
楼主
主题
1922
|
帖子
1922
|
积分
5766
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
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企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
西河刘卡车医
论坛元老
这个人很懒什么都没写!
楼主热帖
【容器~原始真解】Docker —— 容器的 ...
轻量级CI/CD发布部署环境搭建及使用_06 ...
工行、建行、农行的 IT 架构是什么样的 ...
全双工与半双工技术剖析
PHP判断远程文件是否存在的四种方法 ...
超融合一体机上新,打通信创落地的“顶 ...
Spring--循环依赖的原理(四)--为什么用 ...
继承和多重继承
一文了解华为FusionInsight MRS HBase ...
MySQL高可用架构搭建实战
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表