如何将来自 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

上开了一张票