首页 > 解决方案 > 请求“带有工作示例”以将 config.js 中的参数调用到 Karate-DSL 中的功能

问题描述

我的要求:

说,我已经在 karate-config.js 中设置了 dbusername 和 dbpassword,如何在功能文件中调用 dbusername 并将其分配给变量?

我看到一些方法如下

# if the js file evaluates to a function, it can be re-used later using the 'call' keyword
* def someFunction = read('classpath:some-reusable-code.js')

如果我声明 some-reusable-code.js 如下,

function fn() {
  var env = karate.env; // get system property 'karate.env'
  var myBaseUrl = 'https://reqres.in/api/users/2'
  var dbusername = 'myDBUserName'
  var dbpassword = 'myDBPassword'

  karate.log('karate.env system property was:', env);
  if (!env) {
    env = 'dev';
  }
  var config = {
    env: env,
    myVarName: 'someValue'
    myUrl: 'http://reqres.in/users'
  }
  if (env == 'dev') {
    // customize
    // e.g. config.foo = 'bar';
  } else if (env == 'e2e') {
    // customize
  }
  return config;
}

但是当我阅读整个“some-reusable-code.js”时,如何将“dbusername”或“myNarName”或“myUrl”作为 myuseful.feature 中的局部变量分配给myVar ?

请问可以举一个工作的例子吗?

标签: karate

解决方案


请阅读文档:https ://github.com/intuit/karate#configuration

当函数退出时,您缺少作为返回的dbusername一部分返回的部分。config然后你不需要在你的特性中做任何额外的事情,dbusername它将作为一个(全局)变量使用。试试这个硬编码karate-config.js并理解它:

function fn() {
  def config = {};
  config.dbusername = 'myDBUserName';
  config.dbpassword = 'myDBPassword';
  return config;
}

现在在您的功能中:

* print 'dbusername:', dbusername

您可以在这里找到一个工作示例https ://github.com/intuit/karate/tree/master/karate-demo


推荐阅读