karate - 如何以编程方式设置 karate.env ?
问题描述
我正在尝试通过 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/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
参数,所有键和值都将在服务器端功能文件中可用。所以你需要做的就是传递一个像这样的karateEnv
密钥Map
。
server = FeatureServer.start(file, 0, false, Collections.singletonMap("karateEnv", "blah"));
另请参阅此答案以获取更多想法:https ://stackoverflow.com/a/52272220/143475
推荐阅读
- python - 如何在 Selenium 中的主页重定向后检测框架是否不再活动
- python - 用于映射具有相等分布的两个向量的 MATLAB 代码
- php - 测试抛出 RequestGuard::viaRemember() 在第二个请求中不存在
- api - 如何按某列中的值对行进行分组,然后使用 Google Sheets API 将它们导出到相应的新电子表格
- javascript - 如何下载网页客户端的预览?
- sql - 基于 2 列合并数据
- c - 如何正确使用C switch 语句
- javascript - 为什么我的成绩计划获得未定义的回报?
- python-3.x - 遍历数组中的行
- javascript - 页面上显示未定义的值,但 localStorage 仍然存在?