CasperJs + jenkins:当测试失败时,如何检索此测试的所有信息

时间:2014-05-05 09:00:09

标签: jenkins casperjs xunit

好吧,我想知道如何在jenkins中找回测试失败的信息。

这里是我的文件夹(fr)的结果(显示22分钟,但并行显示为3分钟):

jenkinsResult

这里测试的描述失败-jenkins-:

jenkins-casperJs test failed-

此处测试的描述失败-casper-:

casperjs test failed

所以我的问题是jenkins只显示测试的消息失败了,我想将有用的信息作为行和代码(实际上有控制台输出,但它不方便 - >我已经改变了我的我的,见xUnit with Jenkins: how to display colors in the Build Console Output?,但我仍然想要'堆'exécution'/执行堆栈中的信息。

1 个答案:

答案 0 :(得分:8)

我找到了解决方案,只需更改消息......:

casper.test.on("fail", function(failure) {
    failure.message = "Message : " + failure.message + "\nLine : "+ failure.line + "\nCode : " + failure.lineContents;
});

错误恢复堆栈(带有test.begin)也会被修改。但是我不会在jenkins中关心,所以我们可以使用像if casper.cli.get('xunit') { casper.test.on('fail'){...} ;}这样的条件。

所以:

Solution 实际上相当简单......我应该有更好的搜索。

对于Artjom

事实上,对于错误,它非常详细,所以我不认为有更改要做,请参阅: error Casper

但你仍然可以用同样的方式自定义它,它可能是这样的:

casper.test.on("fail", function(failure) {
    //if error type undefined function
    if(failure.message.message){//or failure.message.stack.TypeError
        failure.message.message = "Message : " + failure.message.message + "\nLine : "+ failure.message.line;//in jenkins -> title
    }
    //else assert error
    else{failure.message = "Message : " + failure.message + "\nLine : "+ failure.line + "\nCode : " + failure.lineContents;}

    //console.log(JSON.stringify(failure,4,'\t')); //see parameters you can modify in the failure object
});

此失败事件中没有错误事件,但不同的对象属性(与错误类型相比)。所以你可以按照你想要的方式操纵它们。但我个人感兴趣的是消息,代码和行(默认情况下jenkins用未定义的错误管理它们)。

现在我正在开发一种显示屏幕截图路径的方法,有类似的东西:

Message : No notice on the page
Line : 83
Code : this.test.assertTextDoesntExists('Notice', 'No notice on the page');
Screenshot : http://-jenkins-/job/-myJob-//lastFailedBuild/artifact/screenshots/fail0.png/

嗯,我做到了: https://github.com/n1k0/casperjs/pull/920

目的是使用浏览器直接点击jenkins中的链接并显示屏幕:)