You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 20:39:30