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

如何在Karate Feature文件中按环境条件动态设置API密钥?

基于Karate+Python实现环境适配的API密钥切换方案

方案1:在Karate Feature文件内直接实现条件逻辑

直接借助Karate支持的JavaScript语法完成环境判断,无需额外依赖外部脚本:

Scenario: xyz
  # 定义当前测试的Endpoint(可从外部传入或直接指定)
  * def Endpoint = '<实际测试端点>'
  # 初始化API密钥变量
  * def API_KEY = ''
  # 根据Endpoint关键字匹配环境并设置密钥
  * if (Endpoint.includes('dev'))
    * API_KEY = 'dev api key'
  * else if (Endpoint.includes('sig'))
    * API_KEY = 'Staging api key'
  # 原有业务逻辑
  * def something = abc
  * def result = karate.exec("curl -X blah blah" + API_KEY + Endpoint)

也可以用更简洁的三元表达式写法:

Scenario: xyz
  * def Endpoint = '<实际测试端点>'
  * def API_KEY = Endpoint.includes('dev') ? 'dev api key' : (Endpoint.includes('sig') ? 'Staging api key' : '')
  * def something = abc
  * def result = karate.exec("curl -X blah blah" + API_KEY + Endpoint)

方案2:通过Python传递环境变量(适配GitHub自动化场景)

更适合CI/CD流水线的方式:通过Python读取环境变量,将配置传递给Karate,避免在Feature中硬编码判断逻辑。

步骤1:配置Karate全局config.js

在Karate项目根目录创建config.js,用于根据环境加载对应配置:

function fn() {
  // 从系统属性或环境变量获取当前测试环境,默认dev
  var env = karate.env || 'dev';
  var config = {};
  
  if (env === 'dev') {
    config.apiKey = 'dev api key';
    config.endpoint = 'https://dev-your-domain.com/path';
  } else if (env === 'staging') {
    config.apiKey = 'Staging api key';
    config.endpoint = 'https://sig-your-domain.com/path';
  }
  
  return config;
}

步骤2:Python脚本启动Karate并传递环境变量

Python读取GitHub Actions中设置的环境变量,传递给Karate:

import os
import subprocess

# 从环境变量获取测试环境,默认dev
test_env = os.getenv('TEST_ENV', 'dev')
# 启动Karate并指定环境
subprocess.run(['karate', f'-Dkarate.env={test_env}', 'your-feature-file.feature'])

步骤3:Feature文件直接使用全局配置

Scenario: xyz
  * def something = abc
  # 直接调用config中的预定义变量
  * def result = karate.exec("curl -X blah blah" + config.apiKey + config.endpoint)

步骤4:GitHub Actions中设置环境变量

在GitHub Actions的Workflow文件中配置环境变量:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: 执行dev环境测试
        env:
          TEST_ENV: dev
        run: python your-test-script.py
      - name: 执行staging环境测试
        env:
          TEST_ENV: staging
        run: python your-test-script.py

内容的提问来源于stack exchange,提问作者ram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:25:25