RobotFramework使用Template进行数据驱动测试方法-以登录界面为例

在Robot Framework中,Template(测试模板)是一个非常有用的功能,它允许你将一个关键字驱动的测试用例转换为数据驱动的风格。这意味着你可以用多组不同的输入数据来反复执行同一个测试逻辑。

🤔 理解测试模板

简单来说:

  • 关键字驱动测试:用例由一系列关键字和其参数组成。

  • 数据驱动测试(通过模板实现):用例的主体不再是具体的关键字步骤,而是一组一组的测试数据。你需要指定一个模板关键字,这个关键字定义了要重复执行的测试逻辑,而用例中的每一行数据都会作为参数传递给这个模板关键字。

一个测试用例中只能使用一个[Template],并且不能将带[Template]的关键字和普通的关键字混合在同一个用例中使用。

🛠️ 如何设置测试模板

你有两种主要方式来设置测试模板:

  1. 为单个测试用例设置:在测试用例内部使用 [Template] 设置。

  2. 为所有测试用例设置:在测试套件的Settings表中使用 Test Template 设置。如果某个用例单独设置了 [Template],则会覆盖文件级别的 Test Template 设置

💡 测试模板用法详解

下面我们通过几种常见的使用场景来具体了解模板的用法。

1. 基础用法

这是最直接的使用方式,你有一个接受参数的关键字,然后通过模板用多组数据去调用它。

*** Test Cases ***
普通测试用例
    Example keyword    first argument    second argument

使用模板的测试用例
    [Template]    Example keyword
    first argument    second argument
    third argument    fourth argument
    fifth argument    sixth argument

*** Keywords ***
Example keyword
    [Arguments]    ${arg1}    ${arg2}
    Log    参数1: ${arg1}, 参数2: ${arg2}

在这个例子中,"使用模板的测试用例"会执行三次 Example keyword 关键字

🔧 实际Web测试版本(使用SeleniumLibrary)

*** Settings ***
Library    SeleniumLibrary
Library    Collections

*** Variables ***
${BROWSER}          chrome
${LOGIN_URL}        http://localhost:8080/login
${DELAY}            0.5

*** Test Cases ***
Web登录功能数据驱动测试
    [Template]    Web登录测试模板
    [Setup]    打开浏览器到登录页
    [Teardown]    关闭浏览器
    
    # 用户名          密码              预期结果   预期元素
    testuser        correct_pass      success     id:welcome_message
    wrong_user      wrong_pass        fail        id:error_message
    ${EMPTY}        somepass          fail        id:username_error
    testuser        ${EMPTY}          fail        id:password_error

*** Keywords ***
打开浏览器到登录页
    Open Browser    ${LOGIN_URL}    ${BROWSER}
    Set Window Size    1200    800
    Set Selenium Speed    ${DELAY}

关闭浏览器
    Close Browser

Web登录测试模板
    [Arguments]    ${username}    ${password}    ${expected_result}    ${expected_element}
    
    # 清除并输入用户名
    Run Keyword If    '${username}' != '${EMPTY}'    Input Text    id:username    ${username}
    
    # 清除并输入密码
    Run Keyword If    '${password}' != '${EMPTY}'    Input Text    id:password    ${password}
    
    # 点击登录按钮
    Click Button    id:login_btn
    
    # 根据预期结果验证
    Run Keyword If    '${expected_result}' == 'success'    验证登录成功    ${expected_element}
    ...    ELSE    验证登录失败    ${expected_element}
    
    # 如果需要,返回登录页
    Run Keyword And Ignore Error    Go To    ${LOGIN_URL}

验证登录成功
    [Arguments]    ${expected_element}
    Wait Until Element Is Visible    ${expected_element}    5s
    Log    登录成功验证通过

验证登录失败
    [Arguments]    ${expected_element}
    Wait Until Element Is Visible    ${expected_element}    5s
    Log    登录失败验证通过

测试报告示例

运行上述测试后,你会看到类似这样的报告:

测试用例: 有效的登录凭据应该成功
├── 测试登录功能 (testuser, correct_password, success, 登录成功) ✓ PASS
├── 测试登录功能 (admin, admin123, success, 欢迎) ✓ PASS  
└── 测试登录功能 (user@test.com, Pass123!, success, dashboard) ✓ PASS

测试用例: 无效的登录凭据应该失败
├── 测试登录功能 (invalid_user, wrong_password, fail, 用户名或密码错误) ✓ PASS
├── 测试登录功能 (, correct_password, fail, 用户名不能为空) ✓ PASS
├── 测试登录功能 (testuser, , fail, 密码不能为空) ✓ PASS
└── 测试登录功能 (, , fail, 请输入用户名和密码) ✓ PAS

posted @ 2025-10-30 16:16  水库浪子9527  阅读(3)  评论(0)    收藏  举报  来源