Как мы делаем обработку исключений в protractor-cucumber и делаем уведомление по электронной почте - PullRequest
0 голосов
/ 21 сентября 2018

Я использую каркас Protractor-Cucumber с транспортиром 5.2.2 и огурцом 3.2.У меня есть требование размещения в нет мест.Поэтому я написал для него скрипт в цикле.Но случайным образом происходит сбой до завершения цикла.Поэтому, когда сценарий завершается ненормально, существует ли что-то вроде секции обработки исключений, которая получает контроль перед выходом. Сценарий может завершиться сбоем по любой из причин, таких как проблема с веб-драйвером, NoSuchElementError, ElementIsNotIntractable, ElementIsNotVisible и т. Д. Так или иначе, у меня есть проблемачтобы справиться с этим, и если это не удается, я должен сделать уведомление по электронной почте.Я попытался попробовать поймать, как указано ниже, но у меня это не работает.

When(/^I login$/, function () {
  try{
    element(by.css(".signin")).click();
    var count=post_details.length ; 
    for (var i=0; i<count; i++){ 
      post();
     }
   }
  catch(e){
    console.log("failed");
  }
});

Как мы можем сделать это в транспортире-огурце. Заранее спасибо

1 Ответ

0 голосов
/ 24 сентября 2018

Для исключения проблемы вы можете попробовать это. ignoreUncaughtException

Для части электронной почты создайте файл hooks.js.Здесь вы можете настроить функцию After (), чтобы проверить ваш сценарий сбой или нет. Cucumber Docs .

Пример:

After(function (scenario) {
  if (scenario.result.status === Status.FAILED)
  {     
    failed = true;              
    const attach = this.attach;

    //creates a screenshot for the report
    return browser.takeScreenshot().then(function(png) {
        return attach(new Buffer(png, "base64"), "image/png");
    });
  }
});

Затем вы можете использовать nodemailer для отправки сообщений. Nodemailer

В вашей функции AfterAll () вы можете обрабатывать отправляемую часть.

Пример:

AfterAll(function(callback){
  console.log("AfterAll");
  if (failed)
  {     
    var transporter = nodemailer.createTransport(
    {
        host: 'host.com',
        port: xx,
        secure: false,
        //proxy: 'http://10.10.10.6:1098',
        auth: {
            user: userMail,
            pass: pw
        }
    });

    var mailOptions = {
        from: 'xx', // sender address (who sends)
        to: xxxxxx@mail.com',
        subject: 'your subject', // Subject line
        text: 'Your test failed....', // plaintext body
        /*attachments: [
        {
            filename: 'report.html',
            path: htmlReport,

        }]*/
    };

    transporter.sendMail(mailOptions, function(error, info)
    {
        if(error)
        {
            return console.log(error);
        } 
        console.log('Email sent: ' + info.response);
        console.log(info);
    });

} else {
    //do your stuff
}
setTimeout(callback, 2000);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...