Мои требования:

Допустим, я задал dbusername и dbpassword в karate-config.js, как я могу вызвать 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' к myVar как локальной переменной в myuseful.feature?

Можно ли привести рабочий пример, пожалуйста?

Maaza

Ответов: 1

Ответы (1)

Пожалуйста, прочитайте документацию: 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

2022 WebDevInsider