Robot Framework 自动化测试入门指南
环境搭建
首先,需要安装 Robot Framework 及其常用的 Selenium2Library 库。推荐使用 pip 进行安装:
pip install robotframework robotframework-selenium2library
对于 PyCharm 用户,可以安装以下插件以获得更好的开发体验:
- IntelliBot
- Run Robot Framework Testcase
- RunRobot Framework
基本结构与语法
Robot Framework 测试用例文件(.robot)遵循特定的结构,主要包含以下几个部分:
- Settings: 配置测试套件的各种设置,例如引入库 (Library)、资源文件 (Resource)、设置默认标签 (Default Tags)、定义测试开始 (Test Setup) 和结束 (Test Teardown) 的关键字、指定测试模板 (Test Template) 以及设置超时时间 (Test Timeout)。
- Variables: 定义可在测试套件中使用的变量。
- Keywords: 定义可重用的关键字。
- Test Cases: 编写实际的测试用例。每个测试用例可以包含标签 (Tags)、模板 (Template)、文档 (Documentation)、超时 (Timeout)、返回值 (Return) 等属性,并可以接受参数 (Arguments)。
测试套件(Suite)与初始化
在 Robot Framework 中,目录可以作为测试套件。在目录下放置 __init__.robot 文件,可以为该套件定义通用的 Test Setup 和 Test Teardown 等设置。
*** Settings ***
Test Setup Setup For All Tests
Test Teardown Teardown For All Tests
*** Keywords ***
Setup For All Tests
Log 开始执行测试套件...
Teardown For All Tests
Log 测试套件执行完毕.
关键字定义
关键字可以包含参数,并可以指定返回值。
*** Keywords ***
用户登录
[Arguments] ${user_name} ${user_password}
Open Browser http://example.com/login chrome
Input text id=username_field ${user_name}
Input text id=password_field ${user_password}
Click button id=login_button
${login_status} Page Should Contain 欢迎,${user_name}
[Return] ${login_status}
示例:百度搜索自动化
以下是一个使用 SeleniumLibrary 库进行百度搜索的简单示例。
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
基础搜索功能验证
Log 开始执行 Robot Framework 示例.
百度搜索 Robot Framework
Open Browser http://www.baidu.com chrome
Input text id=kw Robot Framework
Click button id=su
Wait Until Page Contains Robot Framework_百度搜索
Close Browser
更完整的 Selenium 示例
baidu_search.robot
*** Settings ***
Documentation 使用 SeleniumLibrary 进行百度搜索功能的演示.
Library SeleniumLibrary
*** Variables ***
${APP_URL} http://www.baidu.com
${BROWSER_TYPE} Chrome
*** Keywords ***
执行百度搜索
[Arguments] ${keyword}
Input text id:kw ${keyword}
Click button id:su
Sleep 2s
${page_title} Get title
[Return] ${page_title}
*** Test Cases ***
搜索 Robot Framework
Open Browser ${APP_URL} ${BROWSER_TYPE}
${title} 执行百度搜索 Robot Framework
Should Contain ${title} Robot Framework_百度搜索
Close Browser
搜索 Selenium
Open Browser ${APP_URL} ${BROWSER_TYPE}
${title} 执行百度搜索 Selenium
Should Contain ${title} Selenium_百度搜索
Close Browser
无头浏览器(Headless Browser)模式
以下示例演示如何在无头模式下运行 Chrome 浏览器。
*** Settings ***
Documentation 演示如何使用当前库在无头模式下运行浏览器.
Library SeleniumLibrary
Library OperatingSystem # 用于导入 Python 模块
*** Test Cases ***
Chrome 无头模式启动与访问
${options} Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method ${options} add_argument --headless=new # 新版 Chrome 使用 --headless=new
Call Method ${options} add_argument --disable-gpu
Call Method ${options} add_argument --window-size=1920,1080 # 设置窗口大小以适应页面
Create Webdriver Chrome chrome_options=${options}
Go To https://www.baidu.com
${page_title} = Get Title
Log To Console 当前页面标题: ${page_title}
Quit Browser
数据库操作示例
通过 DatabaseLibrary 可以方便地与数据库进行交互。
*** Settings ***
Library DatabaseLibrary
*** Test Cases ***
数据库查询演示
Connect To Database Using Custom Params pymysql database='your_db_name', user='your_user', password='your_password', host='your_host', port=3306, charset='utf8'
${query_result} Query SELECT * FROM your_table WHERE condition='some_value'
Log 查询结果: ${query_result}
Disconnect From Database