karate - 请求“带有工作示例”以将 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 ?
请问可以举一个工作的例子吗?
解决方案
请阅读文档: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
推荐阅读
- sql - Deadlock when using SELECT FOR UPDATE
- java - Need to stream large QueryRunner result to file, seems to be storing in memory
- jquery - Events in a JQuery plugin
- python - 在 Windows 操作系统中的 python 中运行 GDAL 命令
- jquery - 添加自动播放到 youtubevideo
- discord.py - 如何在python中为discord bot编写命令以通过标签搜索图像
- python - 如何遍历每列和每行并附加到字符串并制作键值对
- dialogflow-es - 如何更新 Dialogflow 中的会话实体?
- javascript - 将 ASCII 编码字符串转换为普通字符串 - Javascript
- reactjs - 使用 Create React App 时如何隔离关键 CSS