【Python】RF自动化测试基础学习
一、RF简单介绍:
RF(Robot Framework)是一个基于Python的通用自动化测试框架,主要用于验收测试、验收测试驱动开发(ATDD)和机器人流程自动化(RPA)。它采用关键字驱动(Keyword-Driven)的测试方法,语法简洁易懂,即使是非编程背景的测试人员也能快速上手。
1、RF框架的核心特点:
-
关键字驱动
将测试逻辑封装为“关键字”,测试用例通过组合关键字实现,无需编写复杂代码。例如:登录测试 打开浏览器 https://example.com Chrome 输入文本 用户名输入框 admin 输入文本 密码输入框 123456 点击按钮 登录按钮 验证页面包含 欢迎回来 关闭浏览器 -
跨平台、跨技术
支持Web测试(结合Selenium)、接口测试(结合Requests)、移动应用测试(结合Appium)、数据库测试等,几乎覆盖所有主流测试场景。 -
丰富的生态
拥有大量第三方库(称为“测试库”),如:SeleniumLibrary:Web自动化测试RequestsLibrary:HTTP接口测试DatabaseLibrary:数据库操作AppiumLibrary:移动端测试
-
易扩展
支持自定义关键字(用Python或Java编写),可将复杂逻辑封装后供测试用例调用。 -
详细的报告
执行后自动生成HTML格式的测试报告,包含用例执行结果、日志、截图(如需)等,便于分析问题。
1、RF框架的基本组成:
- 测试用例(Test Cases):核心执行单元,由关键字组合而成。
- 测试套件(Test Suites):包含多个测试用例的集合,通常用目录或文件组织。
- 关键字(Keywords):可复用的操作单元,分为内置关键字、库关键字和自定义关键字。
- 变量(Variables):存储测试数据(如账号、URL),支持从外部文件(.yaml/.json等)导入。
- 资源文件(Resource Files):存放共享的关键字、变量,供多个测试套件复用。
3、简单使用流程:
- 安装框架:
pip install robotframework - 安装所需测试库:
pip install robotframework-seleniumlibrary - 编写测试用例(.robot文件)
- 执行测试:
robot testcase.robot - 查看生成的report.html和log.html报告
RF框架特别适合测试团队协作(开发人员编写关键字,测试人员编写用例),或需要快速实现自动化的场景。其低代码特性降低了自动化门槛,但也支持通过编程扩展复杂功能,灵活性较高。
使用Robot Framework(RF)实现网页登录测试,通常需要结合 SeleniumLibrary 库(用于Web自动化操作)。以下是详细步骤和示例:
二、如何使用RF框架实现某个网页的登录:
1、前提准备
-
安装必要库:
pip install robotframework pip install robotframework-seleniumlibrary # Web自动化核心库 pip install webdriver-manager # 自动管理浏览器驱动 -
准备浏览器驱动:
webdriver-manager会自动下载对应浏览器的驱动(如Chrome、Firefox),无需手动配置。
2、实现网页登录的测试用例
假设测试目标:登录一个示例网站(如模拟的登录页 https://example-login.com),包含用户名输入框、密码输入框和登录按钮。
步骤1:创建测试用例文件(login_test.robot)
*** Settings ***
# 导入Selenium库
Library SeleniumLibrary
# 超时时间设置(秒)
Suite Setup Open Browser https://example-login.com Chrome # 套件初始化:打开浏览器
Suite Teardown Close Browser # 套件结束:关闭浏览器
Test Timeout 30
*** Variables ***
# 定义测试数据(可替换为实际网站的元素定位和账号密码)
${USERNAME} test_user
${PASSWORD} test_pass123
${USER_INPUT} id=username # 用户名输入框的定位方式(id属性)
${PASS_INPUT} id=password # 密码输入框的定位方式
${LOGIN_BUTTON} xpath=//button[@type='submit'] # 登录按钮的xpath定位
${SUCCESS_MSG} xpath=//div[contains(text(), '登录成功')] # 登录成功提示
*** Test Cases ***
# 测试用例1:正常登录
成功登录测试
[Documentation] 验证使用正确账号密码可以登录成功
输入用户名密码并登录
验证登录成功
# 测试用例2:错误密码登录(负面测试)
错误密码登录测试
[Documentation] 验证使用错误密码登录失败
输入用户名 ${USERNAME}
输入密码 wrong_password
点击登录按钮
验证登录失败 密码错误
*** Keywords ***
# 关键字1:输入用户名
输入用户名
[Arguments] ${username}
Input Text ${USER_INPUT} ${username} # 调用Selenium的输入文本方法
# 关键字2:输入密码
输入密码
[Arguments] ${password}
Input Text ${PASS_INPUT} ${password}
# 关键字3:点击登录按钮
点击登录按钮
Click Element ${LOGIN_BUTTON}
Sleep 2 # 等待2秒,确保页面加载完成(实际可改用智能等待)
# 关键字4:组合操作:输入并登录
输入用户名密码并登录
输入用户名 ${USERNAME}
输入密码 ${PASSWORD}
点击登录按钮
# 关键字5:验证登录成功
验证登录成功
Page Should Contain Element ${SUCCESS_MSG} # 检查页面是否包含成功提示
Log 登录成功验证通过
# 关键字6:验证登录失败
验证登录失败
[Arguments] ${error_msg}
Page Should Contain ${error_msg} # 检查页面是否包含错误提示
Log 登录失败验证通过(预期结果:${error_msg})
3、关键说明
-
元素定位方式:
RF中通过SeleniumLibrary支持多种定位方式,如:id=xxx(优先推荐,最稳定)xpath=//xxx(灵活,适合复杂场景)name=xxx、css=xxx等
可通过浏览器F12开发者工具获取元素属性。
-
关键字封装:
将重复操作(如“输入用户名”“点击登录”)封装为关键字,提高用例复用性。 -
等待机制:
- 示例中用
Sleep 2简单等待,实际推荐使用Wait Until Page Contains Element等智能等待,避免因加载延迟导致用例失败:Wait Until Page Contains Element ${SUCCESS_MSG} 10 # 最多等待10秒,直到元素出现
- 示例中用
-
测试数据分离:
变量(如账号密码)可单独放在variables.yaml文件中,通过Variable File导入,便于维护。
4、执行测试
在命令行中运行:
robot login_test.robot
执行完成后,会生成:
report.html:测试汇总报告log.html:详细执行日志(包含每一步操作和截图,如需截图可添加Capture Page Screenshot关键字)
5、注意事项
- 替换示例中的网址(
https://example-login.com)和元素定位(id=username等)为实际测试网站的信息。 - 对于复杂场景(如验证码、弹窗),需额外处理(如调用接口绕过验证码)。
三、如何使用RF框架实现ssh:
要使用Robot Framework(RF)实现SSH登录操作,需要借助专门的SSH测试库——robotframework-sshlibrary。这个库提供了一系列SSH相关的关键字,可用于连接服务器、执行命令、传输文件等操作。
步骤1:安装必要库
首先安装 robotframework-sshlibrary:
pip install robotframework-sshlibrary
步骤2:编写SSH登录测试用例
以下是一个通过RF连接SSH服务器并执行简单命令的示例(假设测试目标是登录到某台Linux服务器):
*** Settings ***
# 导入SSH测试库
Library SSHLibrary
# 测试套件初始化和清理
Suite Setup 初始化SSH连接
Suite Teardown 关闭SSH连接
Test Timeout 60
*** Variables ***
# 定义SSH服务器信息(替换为实际服务器的IP、账号密码)
${SSH_HOST} 192.168.1.100 # 服务器IP或主机名
${SSH_PORT} 22 # SSH默认端口
${SSH_USER} admin # 登录用户名
${SSH_PASS} admin123 # 登录密码
${TIMEOUT} 10 # 操作超时时间(秒)
*** Test Cases ***
# 测试用例1:SSH登录并执行命令
SSH登录及命令执行测试
[Documentation] 验证SSH登录成功并执行简单命令
执行命令并验证 hostname # 执行查看主机名命令
执行命令并验证 whoami # 执行查看当前用户命令
执行命令并验证 pwd # 执行查看当前路径命令
# 测试用例2:错误密码登录(负面测试)
错误密码登录验证
[Documentation] 验证使用错误密码无法登录
[Setup] 关闭SSH连接 # 先关闭已有的连接
Run Keyword And Expect Error *Authentication failed* 尝试登录 ${SSH_USER} wrong_password
Log 错误密码登录验证通过
*** Keywords ***
# 关键字1:初始化SSH连接
初始化SSH连接
Open Connection ${SSH_HOST}:${SSH_PORT} timeout=${TIMEOUT} # 打开SSH连接
Login ${SSH_USER} ${SSH_PASS} # 使用账号密码登录
Log SSH连接已建立并登录成功
# 关键字2:关闭SSH连接
关闭SSH连接
Close All Connections # 关闭所有SSH连接
Log SSH连接已关闭
# 关键字3:执行命令并验证(简化版,实际可根据需求扩展)
执行命令并验证
[Arguments] ${command}
${result} = Execute Command ${command} return_stdout=True # 执行命令并返回输出
Should Not Be Empty ${result} # 验证命令有输出(非空)
Log 命令[${command}]执行成功,输出:${result}
# 关键字4:尝试登录(用于负面测试)
尝试登录
[Arguments] ${user} ${pass}
Open Connection ${SSH_HOST}:${SSH_PORT} timeout=${TIMEOUT}
Login ${user} ${pass}
步骤3、关键说明
-
核心关键字解析:
Open Connection:建立与SSH服务器的连接(需指定主机和端口)。Login:使用用户名和密码登录(支持密钥登录,见下方扩展)。Execute Command:在远程服务器上执行命令,return_stdout=True表示返回命令输出结果。Close All Connections:关闭所有SSH连接,释放资源。
-
元素定位方式:
测试用例中通过变量${SSH_HOST}${SSH_USER}等存储服务器信息,便于统一维护和修改。 -
密钥登录支持:
如果服务器需要密钥认证,可替换Login关键字为Login With Public Key:Login With Public Key ${SSH_USER} /path/to/private_key passphrase=${KEY_PASSWORD}其中
private_key是本地私钥文件路径,passphrase是私钥密码(如无密码可省略)。 -
错误处理:
负面测试中使用Run Keyword And Expect Error关键字,验证错误密码登录时是否抛出预期的“认证失败”错误。
步骤4、执行测试
在命令行中运行测试用例:
robot ssh_login_test.robot
执行后会生成测试报告(report.html)和日志(log.html),可查看登录过程和命令执行结果。
步骤5、注意事项
- 替换变量中的服务器IP、账号密码为实际环境信息,确保网络可访问目标服务器的22端口。
- 对于长时间运行的命令,可通过
timeout参数设置超时时间(如Execute Command ${command} timeout=30)。 - 敏感信息(如密码)可存储在外部文件(如加密的变量文件)中,避免明文暴露。
通过 SSHLibrary,RF可以轻松实现SSH登录、命令执行、文件传输(Get File/Put File)等操作,适用于服务器自动化运维或远程命令测试场景。
更多推荐



所有评论(0)