【问题标题】:Capture Total Time or duration of a Test Suite using Jasmine Hook使用 Jasmine Hook 捕获测试套件的总时间或持续时间
【发布时间】:2020-02-19 22:47:27
【问题描述】:

我一直在尝试从 jasmineDone 挂钩中检索“总时间”或从 SuiteResult 中检索“持续时间”,如 [https://jasmine.github.io/api/edge/global.html#] 中所述,但它们似乎不可用。将不胜感激任何指针?

我发现@DublinDev 对这个Jasmine get current test result 的回答非常有帮助。这使我可以使用我可能使用的 specDone 钩子获取每次测试的持续时间并添加每个结果,但我很想知道我是否做错了什么。

我正在使用上面链接(第二个链接)中的以下代码,并希望任何一个 console.logs 输出时间,但都没有输出任何内容

function dbReporter() {

  this.jasmineStarted = function (options) { };

  this.specStarted = function (result) { };

  this.specDone = async function (result) { };

  this.suiteStarted = function (result) { };

  this.suiteDone = function (result) {
    console.log('duration=', result.duration)
  }
  this.jasmineDone = async function (result) {
    console.log('totalTime=', result.totalTime)
  }
}

module.exports = dbReporter;

【问题讨论】:

  • 嘿,很高兴您发现我之前的回答有帮助!我也希望这能奏效。你能确认你正在使用的 Jasmine 版本吗?看来totalTime 属性仅添加到latest (3.5) releasejasmineDone 的结果对象中。这里是3.4 release to compare
  • 您好 DublinDev,我希望您在某个地方:-) 我使用的是最新版本 3.5,这使得它更加混乱。但是只是想到我的本地版本可能不正确。只是看看
  • 这些控制台日志根本没有被激活还是打印totalTime= undefined
  • 我已经检查过,版本似乎还可以并且是最新的
  • 是的,它们都打印为未定义

标签: node.js jasmine protractor


【解决方案1】:

鉴于您已经拥有最新版本的 Jasmine,我建议您制作自己的计时器,该计时器以 jasmineStarted 钩子开始并以 JasmineDone 钩子结束。

onPrepare: () => {

    //Create a global variable to be used for the timer
    global.jasmineTimer = 0;

    jasmine.getEnv().addReporter({
        jasmineStarted: function (options) {
            jasmineTimer = Date.now();
            console.log(`Starting execution ${jasmineTimer}`)
        },
        jasmineDone: async function (result) {

            console.log(`Finished execution in ${(Date.now() - jasmineTimer) / 1000}s`)
        }
    })
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2012-01-09
    相关资源
    最近更新 更多