RobotFramework使用Template进行数据驱动测试方法-以登录界面为例
在Robot Framework中,Template(测试模板)是一个非常有用的功能,它允许你将一个关键字驱动的测试用例转换为数据驱动的风格。这意味着你可以用多组不同的输入数据来反复执行同一个测试逻辑。
🤔 理解测试模板
简单来说:
-
关键字驱动测试:用例由一系列关键字和其参数组成。
-
数据驱动测试(通过模板实现):用例的主体不再是具体的关键字步骤,而是一组一组的测试数据。你需要指定一个模板关键字,这个关键字定义了要重复执行的测试逻辑,而用例中的每一行数据都会作为参数传递给这个模板关键字。
一个测试用例中只能使用一个[Template],并且不能将带[Template]的关键字和普通的关键字混合在同一个用例中使用。
🛠️ 如何设置测试模板
你有两种主要方式来设置测试模板:
-
为单个测试用例设置:在测试用例内部使用
[Template]设置。 -
为所有测试用例设置:在测试套件的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

浙公网安备 33010602011771号