我正在尝试使用casperjs开发一个测试脚本,如果单个测试失败,则会向开发人员发送一封电子邮件。
邮件脚本由nodejs使用nodemailer制作。 如果启动邮件程序的函数在casperjs脚本中的某个位置它运行正常,则问题出现在测试失败时:看起来casperjs存在而不会留给子进程完成的时间。
我发现使其工作的唯一方法是添加--auto-exit = no并在收到邮件程序响应时显式退出。但是我想避免在剧本之外传递参数。
有没有办法: 在脚本里面设置自动退出选项? 或者分离子进程,以便在父进程退出时不会死亡?
监听器:
casper.test.on("fail", function(failure){
casper.capture(image_dir+'/ERROR.png');
tools.sendMail(
tools.config.recipients,
'Errore '+tools.config.website,
'Il Test sul controllo login è fallito. In allegato screenshot del problema.',
'Il Test sul controllo login è fallito. In allegato screenshot del problema.',
'screenshots/login'+'/ERROR.png'
);
});
功能
var sendMail = function($to,$subject,$text,$html,$attachments) {
var childProcess;
try {
childProcess = require("child_process");
} catch (e) {
casper.echo("error"+e);
}
if (childProcess) {
childProcess.execFile("/usr/bin/nodejs", ["common/mailer.js", $to, $subject, $text, $html , $attachments], null, function(err, stdout, stderr) {
casper.echo("----------------------execFileSTDOUT:"+ JSON.stringify(stdout));
casper.echo("----------------------execFileSTDERR:"+ JSON.stringify(stderr));
casper.exit(1);
});
casper.echo("Done");
} else {
casper.echo("Unable to require child process");
}
};
我还试图使用" nohup / usr / bin / nodejs"但没有运气。
由于