如何以编程方式设置karate.env?。
我试图通过netty服务器设置karate.env,并回复所使用的环境。使用java system.setProperty对karate.env进行的更新未反映在功能文件中。但是java已经正确地更新了system.setProperty 任何输入都会有帮助。谢谢如何以编程方式设置karate.env?。,karate,Karate,我试图通过netty服务器设置karate.env,并回复所使用的环境。使用java system.setProperty对karate.env进行的更新未反映在功能文件中。但是java已经正确地更新了system.setProperty 任何输入都会有帮助。谢谢 Background: * def setEnvVar = Java.type('CMA_Release.Java_Lib.setEnvVar') Scenario: pathMatches('/orangeFMW/psd2_cma
Background:
* def setEnvVar = Java.type('CMA_Release.Java_Lib.setEnvVar')
Scenario: pathMatches('/orangeFMW/psd2_cma/cctoken') && methodIs('post')
* call setEnvVar.set('karate.env',request.Environment)
* print request.Environment
* print karate.env
# * call read('classpath:karate-config.js')
# few other operations
* def response = "Selected Environment : " + karate.env
Response : Selected Environment : null
Server log
scenario matched: pathMatches('/orangeFMW/psd2_cma/cctoken') &&
methodIs('post')
UAT // Java update the value correctly
not a js function or feature file:
setEnvVar.set('karate.env',request.Environment) - [type: NULL, value: null]
[print] UAT
[print]
Java class
public class setEnvVar {
public static void set(String key, String value){
System.setProperty(key, value);
System.out.println(System.getProperty(key,value));
}
编辑:没有注意到您正在询问服务器端(netty)
不,您不能依赖这样将karate.env
从客户端传递到服务器。您应该做的是,当您开始测试时,客户机和服务器都应该了解环境。您已经知道如何为客户端执行此操作(karate config.js
)
启动netty服务器时,可以选择传递JavaMap
参数,并且所有键和值都将在服务器端功能文件中可用。因此,您只需在此地图中传递一个键,如karateinv
server = FeatureServer.start(file, 0, false, Collections.singletonMap("karateEnv", "blah"));
有关更多想法,请参见此答案:谢谢Peter。将在服务器端进行更改。