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

Karate NPM:如何将karate-config.js的值传递到feature文件

解决Karate NPM中Feature文件无法访问配置的问题

问题根源

你当前的karate-config.js存在关键问题:定义的fn()配置函数没有被Karate框架正确识别。你手动执行了fn()并存在config变量里,但Karate需要将配置函数导出,框架才会自动加载并把返回的配置注入到Feature文件的上下文环境中。

修正后的karate-config.js代码

修改导出逻辑,确保Karate能识别配置函数,同时补充默认环境配置避免空值:

#! /usr/bin/env node
const karate = require("@karatelabs/karate");
karate.version = "1.3.0";
let env = process.env["KARATE_ENV"];
karate.properties["env"] = env;
console.log("karate.env: ", env);

// 环境配置函数
function fn() {
  let configData = {};
  if (env === "dev") {
    configData.baseURL = "http://localhost:3010";
    configData.testData = "test/dev/";
    configData.utilityPath = "utility/";
  } else if (env === "qa") {
    configData.baseURL = "http://localhost:3010";
    configData.testData = "test/qa/";
    configData.utilityPath = "utility/";
  } else {
    // 默认环境配置,避免未匹配环境时无配置
    configData.baseURL = "http://localhost:3010";
    configData.testData = "test/default/";
    configData.utilityPath = "utility/";
  }
  return configData;
}

// 关键:将配置函数导出给Karate框架
module.exports = fn;

// 执行测试
karate.exec();

Feature文件中访问配置的方式

修正后,你可以直接在Feature文件中使用配置函数返回的变量名,无需额外前缀:

Feature: 接口测试示例
  Scenario: 调用目标环境接口
    Given url baseURL + "/api/users"
    When method get
    Then status 200
    * print "当前运行环境: ", karate.env
    * print "测试数据路径: ", testData
  • 直接使用baseURL、testData等变量,Karate会自动将配置注入到Feature上下文
  • 访问环境标识可以用karate.env(Karate会自动映射karate.properties['env']到该变量)

额外提示

  • 启动测试时需正确设置环境变量,例如:KARATE_ENV=dev node karate-config.js
  • 如需扩展配置,只需在fn()中添加新的键值对,Feature文件中直接调用即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 00:52:10