CasperJS 测试文件中的测试套件循环导致 shell 中的随机失败
Loop of test suites in a CasperJS test file results in random failures in the shell
我想查看几个网站的标题。所以,当我想用 "test object" 这样做时,我会随机得到不同的结果。我的意思是,当我 运行 shell 命令 "casperjs test ..." 时:
- 有时,我的 shell 会显示所有测试(没问题!)
- 有时(截图 #1),所有测试都没有完成
- 有时(截图 #2),我的 "check title" 测试失败,之前的打开(url)没有加载新的 url (?!)
我的截图shell:
我的代码:
casper.options.loadImages = false;
var lines = [
"http://www.jeuxvideo.com;JEUXVIDEO.COM - La Référence des Jeux Vidéo sur PC et Consoles !",
"http://www.google.fr;Google",
"http://casperjs.org/;CasperJS, a navigation scripting and testing utility for PhantomJS and SlimerJS",
"http://en.wikipedia.org/wiki/Main_Page;Wikipedia, the free encyclopedia",
"http://whosebug.com/;Stack Overflow",
"http://9gag.com/;9GAG - Why So Serious?",
"http://eu.blizzard.com/fr-fr/;Blizzard Entertainment",
"http://openclassrooms.com/;OpenClassrooms, Le Site du Zéro - Les cours les plus ouverts du Web",
"http://lesjoiesducode.fr/;Les joies du code ",
"http://www.developpez.com/;Developpez.com, le club des développeurs et IT Pro",
];
function main(){
this.each(lines, function(self, line){
var tab = line.split(";");
casper.test.begin("test : "+tab[0], 1, function suite(test){
casper.start().then(function(){
this.then(function(){
this.open(tab[0]);
});
this.then(function (){
this.echo(this.currentHTTPStatus);
test.assertTitle(tab[1]);
});
}).run(function(){
test.done();
});
});
});
}
casper.start().then(main).run();
我的版本:
casperjs version : 1.1.0-beta3
phantomjs version : 1.9.7
为什么有时没有完成所有测试,为什么有时没有加载新的 url? (而 open(url) 在 .then)
您应该在您的测试用例中只使用 start
和 run
一次 并且永远不要在 casper.test.begin
之外使用。您不需要 main
函数作为 then
的步骤。此外,您还可以进一步压缩脚本。
lines.forEach(function(line){
var tab = line.split(";");
casper.test.begin("test : "+tab[0], 1, function suite(test){
casper.start(tab[0]).then(function (){
this.echo(this.currentHTTPStatus);
test.assertTitle(tab[1]);
}).run(function(){
test.done();
});
});
});
我想查看几个网站的标题。所以,当我想用 "test object" 这样做时,我会随机得到不同的结果。我的意思是,当我 运行 shell 命令 "casperjs test ..." 时:
- 有时,我的 shell 会显示所有测试(没问题!)
- 有时(截图 #1),所有测试都没有完成
- 有时(截图 #2),我的 "check title" 测试失败,之前的打开(url)没有加载新的 url (?!)
我的截图shell:
我的代码:
casper.options.loadImages = false;
var lines = [
"http://www.jeuxvideo.com;JEUXVIDEO.COM - La Référence des Jeux Vidéo sur PC et Consoles !",
"http://www.google.fr;Google",
"http://casperjs.org/;CasperJS, a navigation scripting and testing utility for PhantomJS and SlimerJS",
"http://en.wikipedia.org/wiki/Main_Page;Wikipedia, the free encyclopedia",
"http://whosebug.com/;Stack Overflow",
"http://9gag.com/;9GAG - Why So Serious?",
"http://eu.blizzard.com/fr-fr/;Blizzard Entertainment",
"http://openclassrooms.com/;OpenClassrooms, Le Site du Zéro - Les cours les plus ouverts du Web",
"http://lesjoiesducode.fr/;Les joies du code ",
"http://www.developpez.com/;Developpez.com, le club des développeurs et IT Pro",
];
function main(){
this.each(lines, function(self, line){
var tab = line.split(";");
casper.test.begin("test : "+tab[0], 1, function suite(test){
casper.start().then(function(){
this.then(function(){
this.open(tab[0]);
});
this.then(function (){
this.echo(this.currentHTTPStatus);
test.assertTitle(tab[1]);
});
}).run(function(){
test.done();
});
});
});
}
casper.start().then(main).run();
我的版本:
casperjs version : 1.1.0-beta3
phantomjs version : 1.9.7
为什么有时没有完成所有测试,为什么有时没有加载新的 url? (而 open(url) 在 .then)
您应该在您的测试用例中只使用 start
和 run
一次 并且永远不要在 casper.test.begin
之外使用。您不需要 main
函数作为 then
的步骤。此外,您还可以进一步压缩脚本。
lines.forEach(function(line){
var tab = line.split(";");
casper.test.begin("test : "+tab[0], 1, function suite(test){
casper.start(tab[0]).then(function (){
this.echo(this.currentHTTPStatus);
test.assertTitle(tab[1]);
}).run(function(){
test.done();
});
});
});