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)**模式。它通过自然语言风格的语法编写测试用例,使得测试脚本易于阅读和维护,甚至非技能人员也能到场其中。
焦点功能亮点



快速安装与环境搭建

条件


安装步调

  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
复制代码
代码分析


运行测试

在终端执行命令:
  1. robot google_search.robot
复制代码
查看报告

执行完成后,天生report.html和log.html文件,具体展示测试效果与操作日志。

Robot Framework语法与关键字

测试文件结构

Robot Framework测试文件通常包含以下部门:

关键字类型


变量利用


示例:
  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企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4