如何将来自 javascript 的 karate.log 呼叫添加到 Cucumber 报告中?
How can I have karate.log call from javascript added to cucumber reports?
我希望能够编写日志语句,将其添加到 karate.log 文件以及使用独立 karate.jar
.
时生成的 Cucumber 报告中
当我使用 javascript 函数中的 karate.log
时,它只会将日志语句添加到 karate.log
文件,而不是黄瓜报告。
我也尝试通过 java
函数以及使用 slf4j
记录器和 com.intuit.karate.Logger
class 来执行此操作。然而,这两个都只将日志添加到 karate.log
文件而不是黄瓜报告。
我需要这个,因为我正在编写一些通用代码,我不希望我的 QA 工程师在空手道功能文件中编写 * print <>
语句。
我还查看了 com.intuit.karate.core.ScriptBridge.log(Object... objects)
方法,这是我假设在您调用 karate.log(..)
时被调用的方法,它看起来应该有效,但它对我不起作用。
我正在使用 karate-0.9.4,这就是我的 karate-config.js
的样子
function conf() {
var env = karate.env // set the environment that is to be used for executing the test scripts
var host = '<some-host-name>';
var port = '443';
var protocol = 'https';
var basePath = java.lang.System.getenv('GOPATH') + '/src/karate-tests';
// a custom 'intelligent' default
if (!env) {
env = 'dev';
}
var applicationURL = ((!port || port == '') || (port == '80' && protocol == 'http') || (port == '443' && protocol == 'https'))
? protocol + '://' + host
: protocol + '://' + host + ":" + port;
// Fail quickly if there is a problem establishing connection or if server takes too long to respond
karate.configure('connectTimeout', 30000);
karate.configure('readTimeout', 30000);
// pretty print request and response
//karate.configure('logPrettyRequest', true);
//karate.configure('logPrettyResponse', true);
karate.configure('printEnabled', true);
// do not print steps starting with * in the reports
//karate.configure('report',{showLog: true, showAllSteps: true });
// Turn off SSL certificate check
karate.configure('ssl', true);
var config = {
env: env,
appBaseURL: applicationURL,
sharedBasePath: basePath
};
karate.log("config.sharedBasePath = ", config.sharedBasePath)
karate.log('karate.env = ', config.env);
karate.log('config.appBaseURL = ', config.appBaseURL);
return config
}
我刚刚在 0.9.5.RC4 中试过这个。如果您正在寻找比这更多的东西 - 它需要改变空手道。欢迎您做出贡献。我不得不说,看到这些请求我感到很惊讶(并且有点恼火)。为什么您如此关注漂亮的报告而不是专注于测试。我希望你考虑一下。
此其他讨论可能是相关参考:https://github.com/intuit/karate/issues/951 | https://github.com/intuit/karate/issues/965
如果你真的想追求这个,你可以看看这个评论中提到的“钩子”拦截器:https://github.com/intuit/karate/issues/970#issuecomment-557443551
因此在 void afterStep(StepResult result, ScenarioContext context);
中 - 您可以通过调用 appendToStepLog(String log)
来修改 StepResult
。
编辑:其他参考资料:
这是因为 karate-0.9.4
中的错误似乎已在 karate-0.9.5.RC4
版本中部分修复。我已经在 GitHub - https://github.com/intuit/karate/issues/975
上开了一张票
我希望能够编写日志语句,将其添加到 karate.log 文件以及使用独立 karate.jar
.
当我使用 javascript 函数中的 karate.log
时,它只会将日志语句添加到 karate.log
文件,而不是黄瓜报告。
我也尝试通过 java
函数以及使用 slf4j
记录器和 com.intuit.karate.Logger
class 来执行此操作。然而,这两个都只将日志添加到 karate.log
文件而不是黄瓜报告。
我需要这个,因为我正在编写一些通用代码,我不希望我的 QA 工程师在空手道功能文件中编写 * print <>
语句。
我还查看了 com.intuit.karate.core.ScriptBridge.log(Object... objects)
方法,这是我假设在您调用 karate.log(..)
时被调用的方法,它看起来应该有效,但它对我不起作用。
我正在使用 karate-0.9.4,这就是我的 karate-config.js
的样子
function conf() {
var env = karate.env // set the environment that is to be used for executing the test scripts
var host = '<some-host-name>';
var port = '443';
var protocol = 'https';
var basePath = java.lang.System.getenv('GOPATH') + '/src/karate-tests';
// a custom 'intelligent' default
if (!env) {
env = 'dev';
}
var applicationURL = ((!port || port == '') || (port == '80' && protocol == 'http') || (port == '443' && protocol == 'https'))
? protocol + '://' + host
: protocol + '://' + host + ":" + port;
// Fail quickly if there is a problem establishing connection or if server takes too long to respond
karate.configure('connectTimeout', 30000);
karate.configure('readTimeout', 30000);
// pretty print request and response
//karate.configure('logPrettyRequest', true);
//karate.configure('logPrettyResponse', true);
karate.configure('printEnabled', true);
// do not print steps starting with * in the reports
//karate.configure('report',{showLog: true, showAllSteps: true });
// Turn off SSL certificate check
karate.configure('ssl', true);
var config = {
env: env,
appBaseURL: applicationURL,
sharedBasePath: basePath
};
karate.log("config.sharedBasePath = ", config.sharedBasePath)
karate.log('karate.env = ', config.env);
karate.log('config.appBaseURL = ', config.appBaseURL);
return config
}
我刚刚在 0.9.5.RC4 中试过这个。如果您正在寻找比这更多的东西 - 它需要改变空手道。欢迎您做出贡献。我不得不说,看到这些请求我感到很惊讶(并且有点恼火)。为什么您如此关注漂亮的报告而不是专注于测试。我希望你考虑一下。
此其他讨论可能是相关参考:https://github.com/intuit/karate/issues/951 | https://github.com/intuit/karate/issues/965
如果你真的想追求这个,你可以看看这个评论中提到的“钩子”拦截器:https://github.com/intuit/karate/issues/970#issuecomment-557443551
因此在 void afterStep(StepResult result, ScenarioContext context);
中 - 您可以通过调用 appendToStepLog(String log)
来修改 StepResult
。
编辑:其他参考资料:
这是因为 karate-0.9.4
中的错误似乎已在 karate-0.9.5.RC4
版本中部分修复。我已经在 GitHub - https://github.com/intuit/karate/issues/975