gpt4 book ai didi

javascript - 将 Json 传递给 karate-config.js 文件

转载 作者:行者123 更新时间:2023-11-30 08:23:30 25 4
gpt4 key购买 nike

我有超过 6 个环境,我必须针对这些环境运行同一组 rest api 脚本。出于这个原因,我将所有测试数据和端点/资源路径存储在一个 json 文件中。然后我尝试将这个 json 文件读入我的 karate-config.js 文件,这是因为我想获取与从命令行 (karate.env) 传递的环境相对应的数据,这些数据正在读入我的 Karate -config.js文件

下面是我的 json 文件示例

[
{
"qa":{
"username_cm_on":"test_cm_on_qa",
"password_cm_on":"Test123$",
"nonadmin_username_cm_on":"test_non_admin_cm_on_qa",
"nonadmin_password_cm_on":"Test123$",
"username_cm_off":"test_cm_off_qa",
"password_cm_off":"Test123$",
"nonadmin_username_cm_off":"test_non_admin_cm_off_qa",
"nonadmin_password_cm_off":"Test123$",
"zuul_urls":{
"home-sec-uri":"https://qa.abc.com/qa/home-sec-uri",
"home-res-uri":"https://qa.abc.com/qa/home-res-uri"
}
}
},
{
"uat":{
"username_cm_on":"test_cm_on_uat",
"password_cm_on":"Test123$",
"nonadmin_username_cm_on":"test_non_admin_cm_on_uat",
"nonadmin_password_cm_on":"Test123$",
"username_cm_off":"test_cm_off_uat",
"password_cm_off":"Test123$",
"nonadmin_username_cm_off":"test_non_admin_cm_off_uat",
"nonadmin_password_cm_off":"Test123$",
"zuul_urls":{
"home-sec-uri":"https://uat.abc.com/qa/home-sec-uri",
"home-res-uri":"https://uat.abc.com/qa/home-res-uri"
}
}
}
]

下面是我的 karate-config.js 文件

function() {
// var env = karate.env; // get system property 'karate.env'
var env = 'qa';
var cm = 'ON';
var envData = call read('classpath:env_data.json'); //require("./env_data.json");
// write logic to read data from the json file _ Done, need testing

karate.log('karate.env system property was:', env);

switch(env) {
case "qa":
if(cm === 'ON'){
config.adminusername_cm_on = getData().username_cm_on;
config.adminpassword_cm_on = "";
config.nonadminusername_cm_on = getData().nonadmin_username_cm_on;
config.nonadminpassword_cm_on = "";
}else if(cm === "OFF") {
config.adminusername_cm_off = getData().username_cm_off;
config.adminpassword_cm_off = "";
config.nonadminusername_cm_off = getData().nonadmin_username_cm_off;
config.nonadminpassword_cm_off = "";
}
break;
case "uat":
break;
default:
break;
}

// This method will return the data from the env_data.json file
var getData = function() {
for(var i = 0; i < obj.length; i++) {
for(var e in obj[i]){
var username_cm_on = obj[i][e]['username_cm_on'];
var nonadmin_username_cm_on = obj[i][e]['nonadmin_username_cm_on'];
var username_cm_off = obj[i][e]['username_cm_off'];
var nonadmin_username_cm_off = obj[i][e]['nonadmin_username_cm_off'];
return {
username_cm_on: username_cm_on,
nonadmin_username_cm_on: nonadmin_username_cm_on,
username_cm_off: username_cm_off,
nonadmin_username_cm_off: nonadmin_username_cm_off
}
}
}
}

var config = {
env: env,
data: getData(),
}

return config;
}

我尝试了几种方法将 env-data.json 文件加载到 karate-config.js 中,如下所示

var envData =  call read('classpath:env_data.json');

我从这个 stackover 流程​​答案中知道以上内容无效 Karate - How to import json data通过 Peter Thomas

所以,尝试使用下面的

var envData =  read('classpath:env_data.json');
var envData = require("./env_data.json");
var envData = require('./env_data.json');

但是,仍然面临读取 json 文件的问题。感谢对此的帮助。

最佳答案

我认为您的 JSON 过于复杂。您只需要一个对象,不需要顶级数组。只需将其用作 env_data.json:

{
"qa":{
"username_cm_on":"test_cm_on_qa",
"password_cm_on":"Test123$",
"nonadmin_username_cm_on":"test_non_admin_cm_on_qa",
"nonadmin_password_cm_on":"Test123$",
"username_cm_off":"test_cm_off_qa",
"password_cm_off":"Test123$",
"nonadmin_username_cm_off":"test_non_admin_cm_off_qa",
"nonadmin_password_cm_off":"Test123$",
"zuul_urls":{
"home-sec-uri":"https://qa.abc.com/qa/home-sec-uri",
"home-res-uri":"https://qa.abc.com/qa/home-res-uri"
}
},
"uat":{
"username_cm_on":"test_cm_on_uat",
"password_cm_on":"Test123$",
"nonadmin_username_cm_on":"test_non_admin_cm_on_uat",
"nonadmin_password_cm_on":"Test123$",
"username_cm_off":"test_cm_off_uat",
"password_cm_off":"Test123$",
"nonadmin_username_cm_off":"test_non_admin_cm_off_uat",
"nonadmin_password_cm_off":"Test123$",
"zuul_urls":{
"home-sec-uri":"https://uat.abc.com/qa/home-sec-uri",
"home-res-uri":"https://uat.abc.com/qa/home-res-uri"
}
}
}

然后这个 karate-config.js 将起作用:

function() {
var env = 'qa'; // karate.env
var temp = read('classpath:env_data.json');
return temp[env];
}

并且您的测试可以更具可读性:

Given url zuul_urls['home-sec-uri']

如果您无法理解其工作原理,请参阅此答案:https://stackoverflow.com/a/59162760/143475

关于javascript - 将 Json 传递给 karate-config.js 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49690975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com