Robot Framework:一篇文章搞定Web、API、数据库主动化测试 ...

打印 上一主题 下一主题

主题 1923|帖子 1923|积分 5769

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

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及其常用库。
安装步调

  1. # 安装Robot Framework核心库
  2. pip install robotframework
  3. # 安装Web测试库SeleniumLibrary
  4. pip install robotframework-seleniumlibrary
  5. # 安装API测试库RequestsLibrary
  6. pip install robotframework-requests
  7. # 安装数据库测试库DatabaseLibrary
  8. pip install robotframework-databaselibrary
复制代码
验证安装

在终端输入以下命令,若显示版本号则安装成功:
  1. robot --version
复制代码

编写测试用例:Web主动化示例

创建测试文件

新建一个.robot文件(如baidu_search.robot),编写以下内容:
  1. *** Settings ***
  2. Library    SeleniumLibrary
  3. *** Test Cases ***
  4. Search for Robot Framework
  5.     Open Browser    https://www.baidu.com    Chrome
  6.     Input Text      name=q    Robot Framework
  7.     Press Keys      name=q    ENTER
  8.     Wait Until Page Contains    Results
  9.     Close Browser
复制代码
代码分析



  • Settings:引入依靠库(如SeleniumLibrary)。
  • Test Cases:定义测试步调,利用关键字(如Open Browser、Input Text)模拟用户操作。
运行测试

在终端执行命令:
  1. 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},存储键值对。
示例:
  1. *** Variables ***
  2. ${URL}    https://example.com
  3. @{CREDENTIALS}    admin    secret
  4. *** Test Cases ***
  5. Login Test
  6.     Open Browser    ${URL}    Chrome
  7.     Input Text      id=username    ${CREDENTIALS}[0]
  8.     Input Password  id=password    ${CREDENTIALS}[1]
复制代码

常用功能与高级用法

数据驱动测试

通过[Template]标签实现多组数据测试。
示例:验证不同用户的登录场景
  1. *** Test Cases ***
  2. Invalid Login Scenarios
  3.     [Template]    Login With Invalid Credentials
  4.     invalid_user    valid_pass    Error: User not found
  5.     valid_user      invalid_pass    Error: Incorrect password
  6.     ${EMPTY}        ${EMPTY}       Error: Username required
  7. *** Keywords ***
  8. Login With Invalid Credentials
  9.     [Arguments]    ${username}    ${password}    ${error}
  10.     Input Text     id=username    ${username}
  11.     Input Password id=password    ${password}
  12.     Click Button   Login
  13.     Page Should Contain    ${error}
复制代码
标签管理

通过[Tags]分类测试用例,机动控制执行范围。
示例:
  1. *** Test Cases ***
  2. Search Product
  3.     [Tags]    smoke    search
  4.     # 测试步骤...
  5. Checkout Process
  6.     [Tags]    regression    checkout
  7.     # 测试步骤...
复制代码
运行指定标签的测试:
  1. robot --include smoke tests.robot
复制代码
并行测试

利用pabot库加快测试执行:
  1. pip install robotframework-pabot
  2. pabot --processes 4 tests/
复制代码
自定义库开发

通过Python编写自定义关键字库(示例):
  1. # mylibrary.py
  2. from robot.api.deco import keyword
  3. class MyLibrary:
  4.     @keyword
  5.     def generate_email(self, username):
  6.         return f"{username}@example.com"
复制代码
在测试文件中引用:
  1. *** Settings ***
  2. Library    mylibrary.py
  3. *** Test Cases ***
  4. Generate Test Email
  5.     ${email}=    Generate Email    user123
  6.     Log    ${email}  # 输出 user123@example.com
复制代码

典型应用场景与示例

Web主动化测试(SeleniumLibrary)

  1. *** Settings ***
  2. Library    SeleniumLibrary
  3. *** Test Cases ***
  4. Add Product to Cart
  5.     Open Browser    https://shop.example.com    Chrome
  6.     Input Text      id=search    Laptop
  7.     Click Element   css=.search-button
  8.     Wait Until Page Contains    Laptop
  9.     Click Element   css=.add-to-cart
  10.     Element Should Contain    css=.cart-count    1
  11.     Close Browser
复制代码
API测试(RequestsLibrary)

  1. *** Settings ***
  2. Library    RequestsLibrary
  3. *** Test Cases ***
  4. Get User Details
  5.     Create Session    api    https://api.example.com
  6.     ${response}=    GET On Session    api    /users/1
  7.     Status Should Be    200    ${response}
  8.     ${json}=    Set Variable    ${response.json()}
  9.     Should Be Equal    ${json["name"]}    John Doe
复制代码
数据库验证(DatabaseLibrary)

  1. *** Settings ***
  2. Library    DatabaseLibrary
  3. *** Test Cases ***
  4. Check Orders Count
  5.     Connect To Database    pymysql    dbname=orders    user=root    password=secret
  6.     ${count}=    Row Count    SELECT * FROM orders WHERE status='completed'
  7.     Should Be True    ${count} >= 10
复制代码
RPA主动化(RPA Framework)

  1. *** Settings ***
  2. Library    RPA.Browser
  3. *** Tasks ***
  4. Download Report
  5.     Open Available Browser    https://internal.site.com
  6.     Input Text    id=username    admin
  7.     Input Password    id=password    secret
  8.     Click Button    Login
  9.     Download    link=Monthly Report
  10.     Close Browser
复制代码

集成CI/CD与最佳实践

与Jenkins集成

在Jenkins中设置Robot Framework插件,添加构建步调:
  1. robot --outputdir results/ tests/
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

西河刘卡车医

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表