Robot Framework如何在QA、Staging、Prod多环境下执行测试
Robot Framework 多环境多浏览器动态执行实现方案
核心是利用Robot Framework原生的命令行自定义变量传参能力,不需要引入额外第三方插件,分三步即可实现:
1. 拆分各环境配置文件
单独建config目录存放不同环境的差异化配置(访问地址、测试账号、环境专属参数等),每个环境对应一个独立的变量文件:
config/env_qa.robot:QA环境配置config/env_staging.robot:Staging预发环境配置config/env_prod.robot:Prod生产环境配置
以QA环境配置文件为例,内容如下:
*** Variables *** ${APP_BASE_URL} https://qa.yourapp.com ${TEST_ACCOUNT} test_qa@yourapp.com ${TEST_PWD} QaTest@123
其他环境的配置文件只需要替换对应变量的实际值即可。
2. 封装通用浏览器启动逻辑
在公共关键字目录下写通用的启动关键字,不要硬编码浏览器类型,统一接收命令行传入的浏览器参数做分支判断,示例(基于SeleniumLibrary):
*** Settings *** Library SeleniumLibrary *** Keywords *** 启动被测应用 [Arguments] ${browser_name} # 初始化不同浏览器的配置项,可根据需要加无头模式、窗口大小、禁用弹窗等参数 ${chrome_opt} Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver ${firefox_opt} Evaluate sys.modules['selenium.webdriver'].FirefoxOptions() sys, selenium.webdriver IF '${browser_name}'.lower() == 'chrome' Call Method ${chrome_opt} add_argument --start-maximized Open Browser ${APP_BASE_URL} chrome options=${chrome_opt} ELSE IF '${browser_name}'.lower() == 'firefox' Call Method ${firefox_opt} add_argument --start-maximized Open Browser ${APP_BASE_URL} firefox options=${firefox_opt} ELSE IF '${browser_name}'.lower() == 'edge' Open Browser ${APP_BASE_URL} edge ELSE Fail 不支持的浏览器类型:${browser_name},可选值为chrome/firefox/edge END
3. 测试用例引用公共逻辑
用例层不需要关心当前运行的环境和浏览器,直接引用公共关键字和配置变量即可,以登录用例为例:
*** Settings *** Resource ../common/CommonKeywords.robot # 测试启动时自动打开应用,传入命令行指定的浏览器参数 Test Setup 启动被测应用 ${BROWSER} Test Teardown Close All Browsers *** Test Cases *** 账号密码正常登录 Input Text css:#username ${TEST_ACCOUNT} Input Text css:#password ${TEST_PWD} Click Element css:#loginSubmit Page Should Contain 登录成功
执行命令示例
执行时通过-v/--variable传入浏览器参数,通过--variablefile指定当前要加载的环境配置文件即可:
# 示例1:QA环境 + Chrome 执行所有用例 robot -v BROWSER:chrome --variablefile config/env_qa.robot tests/ # 示例2:Staging环境 + Firefox 执行登录模块用例 robot -v BROWSER:firefox --variablefile config/env_staging.robot tests/Login/ # 示例3:Prod环境 + Edge 执行冒烟用例集 robot -v BROWSER:edge --variablefile config/env_prod.robot tests/smoke/
可选优化
- 可以在公共变量文件中给参数加默认值,比如默认
${BROWSER} chrome、${ENV} qa,不传参时默认跑QA环境的Chrome用例 - 可以在套件级Setup中加参数校验逻辑,判断传入的环境、浏览器值是否在允许的范围内,提前抛出明确的错误提示,避免执行到中途才发现参数错误
- 如果配置项不多,也可以不用拆分多个环境文件,把所有环境配置存在一个字典变量里,根据传入的ENV值动态取对应配置即可,减少文件数量
内容的提问来源于stack exchange,提问作者Sudheer
相关产品推荐
相关产品推荐

