如何在 CasperJS 断言失败时继续测试用例?
How to continue a test case when an assertion failed in CasperJS?
有没有办法在发生故障时继续测试套件?
例如:
casper.test.begin("",3,function suite(){
casper.start(url).then(function(){
test.assert(...);
test.assert(...); //If this assert fail, the script stop and the third assert isn't tested
test.assert(...);
}).run(function(){
test.done();
});
});
我希望所有断言都经过测试,即使有些失败。可能吗?
这通常是您在单元测试时想要的:如果无论如何都会失败,请尽快进行。 IE。在每个测试函数的第一个问题上失败。此外,后来的测试通常假设较早的测试已通过,例如如果页面标题错误并显示 404,则没有必要测试页面上的图像数量是否正确。
我猜您想要这个,以便您可以在测试结果中获得更多信息,一种方法是使用单个断言和自定义错误消息:
var title = this.getTitle();
var linkText = this.getHTML('a#testLink');
this.assert( title == "MyPage" && linkText == "continue",
"title=" + title + ";a#testLink = " + linkText);
但这可能会变得混乱。如果您想使用 assert
系列函数的所有功能,而不是让它们抛出,而是继续,对 the source code 的研究表明这可能有效:
test.assert(false, null, {doThrow:false} );
test.assertEquals(1 == 2, null, {doThrow:false} );
test.assertEquals(2 == 2);
如果您希望这是所有断言的默认行为,那么破解代码可能是最佳选择! (将 doThrow
的 true
的默认值更改为 false
。)
见casperjs google group post。我们可以用 casper.then(..
包围断言
下面的代码可以像我想要的那样工作(但这种方式可能不是最好的?)
casper.test.begin("",3,function suite(){
casper.start(url).then(function(){
casper.then(function(){
test.assert(...); //if fail, this suite test continue
});
casper.then(function(){
test.assert(...); //so if assert(1) fail, this assert is executed
});
casper.then(function(){
test.assert(...);
});
}).run(function(){
test.done();
});
});
有没有办法在发生故障时继续测试套件? 例如:
casper.test.begin("",3,function suite(){
casper.start(url).then(function(){
test.assert(...);
test.assert(...); //If this assert fail, the script stop and the third assert isn't tested
test.assert(...);
}).run(function(){
test.done();
});
});
我希望所有断言都经过测试,即使有些失败。可能吗?
这通常是您在单元测试时想要的:如果无论如何都会失败,请尽快进行。 IE。在每个测试函数的第一个问题上失败。此外,后来的测试通常假设较早的测试已通过,例如如果页面标题错误并显示 404,则没有必要测试页面上的图像数量是否正确。
我猜您想要这个,以便您可以在测试结果中获得更多信息,一种方法是使用单个断言和自定义错误消息:
var title = this.getTitle();
var linkText = this.getHTML('a#testLink');
this.assert( title == "MyPage" && linkText == "continue",
"title=" + title + ";a#testLink = " + linkText);
但这可能会变得混乱。如果您想使用 assert
系列函数的所有功能,而不是让它们抛出,而是继续,对 the source code 的研究表明这可能有效:
test.assert(false, null, {doThrow:false} );
test.assertEquals(1 == 2, null, {doThrow:false} );
test.assertEquals(2 == 2);
如果您希望这是所有断言的默认行为,那么破解代码可能是最佳选择! (将 doThrow
的 true
的默认值更改为 false
。)
见casperjs google group post。我们可以用 casper.then(..
下面的代码可以像我想要的那样工作(但这种方式可能不是最好的?)
casper.test.begin("",3,function suite(){
casper.start(url).then(function(){
casper.then(function(){
test.assert(...); //if fail, this suite test continue
});
casper.then(function(){
test.assert(...); //so if assert(1) fail, this assert is executed
});
casper.then(function(){
test.assert(...);
});
}).run(function(){
test.done();
});
});