代码之家  ›  专栏  ›  技术社区  ›  Devleena

我们如何在量角器中进行异常处理和电子邮件通知

  •  1
  • Devleena  · 技术社区  · 6 年前

    我使用的量角器黄瓜框架量角器5.2.2和黄瓜3.2。我有一个张贴在数量的地点的要求。所以我为它写了一个循环脚本。但在完成循环之前它会随机失败。因此,当脚本异常结束时,是否有一个异常处理部分在退出前获得控制权。脚本可能会由于web驱动程序问题、NoSuchElementError、ElementIsNotIncolvable、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 回复  |  直到 6 年前
        1
  •  0
  •   Maxim    6 年前

    对于异常问题,可以尝试以下方法。 ignoreUncaughtException

    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

    在AfterAll()函数中,可以处理send部分。

    例子:

    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);
    });