测试场景描述
测试一个电商网站的功能:
-
用户登录功能
-
商品搜索功能
-
购物车管理功能
项目结构

1. 测试套件级别的 Setup/Teardown
在 __init__.robot 文件中定义:
*** Settings ***
Suite Setup Global Suite Setup
Suite Teardown Global Suite Teardown
Resource resources/common_keywords.robot
Variables resources/variables.py
*** Keywords ***
Global Suite Setup
[Documentation] 整个测试套件的初始化操作
Log 正在执行全局套件初始化...
Open Browser ${BASE_URL} ${BROWSER}
Maximize Browser Window
Set Selenium Timeout 10 seconds
${timestamp}= Get Current Date
Set Suite Variable ${SUITE_START_TIME} ${timestamp}
Log 浏览器已打开,准备开始测试套件
Global Suite Teardown
[Documentation] 整个测试套件的清理操作
Log 正在执行全局套件清理...
Close All Browsers
${end_time}= Get Current Date
${duration}= Subtract Date From Date ${end_time} ${SUITE_START_TIME}
Log 测试套件执行完成,总耗时: ${duration}秒
Log To Console \n测试套件执行完成!\n
测试套件 Setup/Teardown 使用场景:
-
✅ 全局浏览器管理(打开/关闭浏览器)
-
✅ 设置全局超时时间
-
✅ 记录套件执行时间
-
✅ 初始化全局变量
-
✅ 清理所有测试共用的资源
2. 测试用例文件级别的 Setup/Teardown
在 login_tests.robot 文件中定义:
*** Settings ***
Test Setup Login Test Setup
Test Teardown Login Test Teardown
Resource resources/common_keywords.robot
Variables resources/variables.py
*** Keywords ***
Login Test Setup
[Documentation] 登录测试的初始化操作
Log 正在准备登录测试环境...
Go To ${LOGIN_URL}
Wait Until Page Contains Element id=login-form 5s
Capture Page Screenshot login_setup_{index}.png
Login Test Teardown
[Documentation] 登录测试的清理操作
Log 正在清理登录测试环境...
Run Keyword If Test Failed Capture Page Screenshot login_failed_{index}.png
Clear Browser Cookies
Go To ${LOGOUT_URL}
Wait Until Page Contains 您已成功登出 3s
3. 测试用例级别的 Setup/Teardown
在 cart_tests.robot 文件中定义:
*** Test Cases ***
Add Item To Cart
[Documentation] 测试添加商品到购物车
[Setup] Add To Cart Setup
[Teardown] Add To Cart Teardown
Click Element id=add-to-cart-btn
Wait Until Page Contains 已添加到购物车 3s
Element Should Be Visible css=.cart-notification
# 验证购物车数量
${cart_count}= Get Text id=cart-item-count
Should Be Equal As Integers ${cart_count} 1
Remove Item From Cart
[Documentation] 测试从购物车移除商品
[Setup] Add To Cart Setup
[Teardown] Add To Cart Teardown
Click Element id=add-to-cart-btn
Wait Until Page Contains 已添加到购物车 3s
# 进入购物车
Go To ${CART_URL}
Click Element css=.remove-item-btn
Wait Until Page Contains 购物车已空 5s
Page Should Contain 您的购物车是空的
*** Keywords ***
Add To Cart Setup
[Documentation] 购物车测试的初始化操作
Log 准备购物车测试环境...
Login With Valid Credentials
Search For Product Robot Framework Book
Select First Search Result
Add To Cart Teardown
[Documentation] 购物车测试的清理操作
Log 清理购物车测试环境...
Clear Shopping Cart
Run Keyword If Test Failed Capture Page Screenshot cart_failed_{index}.png
4. 公共关键字文件 (resources/common_keywords.robot)
*** Keywords ***
Login With Valid Credentials
[Arguments] ${username}=${VALID_USER} ${password}=${VALID_PASS}
Go To ${LOGIN_URL}
Input Text id=username ${username}
Input Password id=password ${password}
Click Button id=login-btn
Wait Until Page Contains 欢迎回来 5s
Search For Product
[Arguments] ${search_term}
Input Text id=search-box ${search_term}
Press Keys id=search-box ENTER
Wait Until Page Contains 搜索结果 5s
Select First Search Result
Click Element css=.search-results li:first-child
Wait Until Page Contains 商品详情 5s
Clear Shopping Cart
Go To ${CART_URL}
${item_count}= Get Element Count css=.cart-item
FOR ${index} IN RANGE ${item_count}
Click Element css=.remove-item-btn:first-child
Wait Until Element Is Not Visible css=.remove-item-btn:first-child 5s
END
5. 变量文件 (resources/variables.py)
# 环境配置
BROWSER = "chrome"
BASE_URL = "https://www.example-shop.com"
# 页面URL
LOGIN_URL = f"{BASE_URL}/login"
LOGOUT_URL = f"{BASE_URL}/logout"
CART_URL = f"{BASE_URL}/cart"
# 测试账号
VALID_USER = "test_user@example.com"
VALID_PASS = "secure_password_123"
执行流程说明
测试套件执行顺序:

具体执行顺序示例:
-
测试套件 Setup (
__init__.robot)-
打开浏览器
-
最大化窗口
-
设置超时时间
-
-
执行 login_tests.robot 文件
-
文件级别 Setup (每个测试用例前执行)
-
导航到登录页
-
等待登录表单加载
-
-
执行登录测试用例
-
文件级别 Teardown (每个测试用例后执行)
-
清除cookies
-
执行登出
-
-
-
执行 cart_tests.robot 文件
-
测试用例级别 Setup (仅针对特定用例)
-
登录用户
-
搜索商品
-
选择商品
-
-
执行添加商品到购物车测试
-
测试用例级别 Teardown
-
清空购物车
-
失败时截图
-
-
-
测试套件 Teardown (
__init__.robot)-
关闭所有浏览器
-
计算执行时间
-
不同级别 Setup/Teardown 使用场景总结
| 级别 | Setup 使用场景 | Teardown 使用场景 | 执行频率 |
|---|---|---|---|
| 测试套件 | - 打开浏览器 - 设置全局超时 - 初始化全局变量 | - 关闭浏览器 - 生成报告摘要 - 清理全局资源 | 整个套件执行一次 |
| 测试文件 | - 导航到模块首页 - 准备模块测试环境 - 登录 | - 模块级别清理 - 登出用户 - 失败截图 | 文件中每个用例执行前 |
| 测试用例 | - 准备特定测试数据 - 进入特定状态 - 预置条件 | - 清理测试数据 - 恢复初始状态 - 验证后置条件 | 仅针对特定用例 |
最佳实践建议
-
层级选择原则:

-
Teardown 注意事项:
-
总是处理失败场景(如失败截图)
-
清理操作要有容错机制(如使用
Run Keyword And Ignore Error) -
恢复环境到初始状态
-
-
避免常见错误:
-
不要在套件Setup中做用例级别的初始化
-
避免在Setup中包含业务逻辑
-
Teardown中不要包含关键断言
-
-
高级技巧:
*** Test Cases *** Advanced Teardown Example [Teardown] Run Keywords ... Run Keyword If Test Failed Capture Full Page Screenshot ... AND Clear Test Data ... AND Restore Default Settings
通过合理使用不同级别的 Setup/Teardown,可以使测试代码更清晰、更易维护,同时确保测试环境的正确初始化和清理,提高测试的稳定性和可靠性。

5926

被折叠的 条评论
为什么被折叠?



