我希望能够拥有一组Casper JS测试并在成功时获得退出代码0,在错误或测试失败时获得非零(我想从java运行casper命令并确定是否测试传递)。
我遇到的问题是始终返回退出代码0。以下是发生这种情况的示例测试:
var casper = require('casper').create();
casper.start('http://www.google.com', function() {
this.test.assertEquals(true, casper.cli.options['value']);
});
casper.run(function() {
casper.test.done(1);
});
以下所有命令都会导致退出代码为0:
C:/casperjs/bin/casperjs test --value=true C:/Temp/simpletest.js
C:/casperjs/bin/casperjs test --value=false C:/Temp/simpletest.js
C:/casperjs/bin/casperjs --value=true C:/Temp/simpletest.js
C:/casperjs/bin/casperjs --value=false C:/Temp/simpletest.js
如何调用Casper并确定测试是成功还是失败/错误?
答案 0 :(得分:1)
首先,您无法在测试模式下覆盖casper实例,请参阅http://docs.casperjs.org/en/latest/testing.html#test-command-args-and-options
删除
var casper = require('casper').create();
来自你的代码。
然后尝试
casper.start('http://www.google.com', function(test) {
test.assertEquals(true, casper.cli.options['value']);
});
使用
启动casperjs--fail-fast
以便每个测试都将以代码1退出。
然后在Java
String[] args = {"/bin/sh", "-c", "casperjs test --fail-fast simpletest.js"};
Process proc = Runtime.getRuntime().exec(args);
logger.log(Level.INFO, IOUtils.toString(proc.getInputStream()));
String warnings = IOUtils.toString(proc.getErrorStream());
if (StringUtils.isNotBlank(warnings)) {
logger.log(Level.WARNING, warnings);
}
int exitValue = proc.exitValue();
assertEquals(0, exitValue);
当然,您需要更改适合您环境的路径。
希望有所帮助!
答案 1 :(得分:0)
我遇到的问题是总是返回退出代码0。
你的casper测试应该是这样的:
var casper = require('casper').create();
var system = require('system');
var param;
casper.start('http://www.google.com', function() {
//get parameter from command line
system.args.forEach(function (arg, i) {
if(arg.search(/--value=/i) != -1){
param = arg.replace(/--value=/g, "");
}
});
this.test.assertEquals(true, Boolean(param));
});
casper.run(function() {
this.test.done(1);
this.test.renderResults(true);
});
运行:
casperjs simpletest.js --value = true
如何调用Casper并确定测试是成功还是失败/错误?
你应该看看这个答案:
答案 2 :(得分:0)
返回预定义的失败代码(例如,对于我们,我们给出了99(随机))
//Capture all fails
casper.test.on("fail", function () {
casper.exit(99);
});
同样,您可以为高级别的其他问题定义不同的代码
例如:为了获得重试逻辑,我们可以使用onWaitTimeout
代码
casper.options.onWaitTimeout = function () {
casper.screenCapture('POETerror', true);
this.exit(98);
};