Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 如何在Cypress中发送包含测试报告的电子邮件_Email_Cypress_Nodemailer_Test Reporting - Fatal编程技术网

Email 如何在Cypress中发送包含测试报告的电子邮件

Email 如何在Cypress中发送包含测试报告的电子邮件,email,cypress,nodemailer,test-reporting,Email,Cypress,Nodemailer,Test Reporting,我正在努力实现以下目标: 创建一个只包含测试名称和状态(失败/通过)的简单测试报告 通过电子邮件以基本HTML格式发送此报告 为此,我需要: 基本报告程序而不是默认报告程序 图书馆,可以发送电子邮件。我已经试过了nodemailer。但是,当我将其与Cypress解决方案连接时,它不会发送任何电子邮件。我尝试了不同的邮箱帐户(nodeEmailer.createTestAccount(),一个来自我的公司,一个来自SendGrid),但这不起作用(我没有收到任何电子邮件) 关于第2点,这里是我使

我正在努力实现以下目标:

  • 创建一个只包含测试名称和状态(失败/通过)的简单测试报告
  • 通过电子邮件以基本HTML格式发送此报告
  • 为此,我需要:

  • 基本报告程序而不是默认报告程序
  • 图书馆,可以发送电子邮件。我已经试过了
    nodemailer
    。但是,当我将其与Cypress解决方案连接时,它不会发送任何电子邮件。我尝试了不同的邮箱帐户(
    nodeEmailer.createTestAccount()
    ,一个来自我的公司,一个来自SendGrid),但这不起作用(我没有收到任何电子邮件)
  • 关于第2点,这里是我使用的代码示例。这是index.js文件中的代码-我需要在所有测试之后发送它:

    after(() => {
    
    var nodemailer = require('nodemailer');
    var sgTransport = require('nodemailer-sendgrid-transport');
    
    var options = {
      auth: {
        api_user: 'sendgrid_USER',
        api_key: 'sendgrid_APIKEY'
      }
    }
    
    var client = nodemailer.createTransport(sgTransport(options));
    
    var email = {
        from: 'FROM_MAIL.PL',
        to: 'TO_MAIL.PL',
      subject: 'Hello',
      text: 'Hello world',
      html: '<b>Hello world</b>'
    };
    
    client.sendMail(email, function(err, info){
        if (err ){
          console.log(error);
        }
        else {
          console.log('Message sent: ' + info.response);
        }
    });
    
    (()=>{ var nodeEmailer=require('nodeEmailer'); var sgTransport=require('nodemailer-sendgrid-transport'); 变量选项={ 认证:{ api_用户:“sendgrid_用户”, api_键:“sendgrid_APIKEY” } } var client=nodeEmailer.createTransport(sgTransport(选项)); var电子邮件={ from:'from_MAIL.PL', 致:“to_MAIL.PL”, 主题:“你好”, 文字:“你好,世界”, html:“你好,世界” }; client.sendMail(电子邮件、函数(错误、信息){ 如果(错误){ console.log(错误); } 否则{ console.log('发送的消息:'+信息响应); } }); }))

    是Node.js的模块,因此需要在Cypress任务中运行它

    将其添加到您的/cypress/plugins/index.js文件中

    const sendAnEmail=(message)=>{
    const nodemailer=require('nodemailer');
    const sgTransport=require('nodemailer-sendgrid-transport');
    常量选项={
    认证:{
    api_用户:“sendgrid_用户”,
    api_键:“sendgrid_APIKEY”
    }
    }
    const client=nodemailer.createTransport(sgTransport(选项));
    常量电子邮件={
    from:'from_MAIL.PL',
    致:“to_MAIL.PL”,
    主题:“你好”,
    文本:消息,
    html:“你好,世界”
    };
    client.sendMail(电子邮件、函数(错误、信息){
    返回err?err.message:'已发送的消息:'+info.response;
    });
    }
    module.exports=(打开,配置)=>{
    关于(‘任务’{
    发送邮件(信息){
    返回sendAnEmail(消息);
    }
    })
    }
    
    然后在测试中(或在所有测试的/cypress/support/index.js中)

    (()=>{ cy.task('sendMail','这将输出到电子邮件地址') .then(result=>console.log(result)); })
    这是本例的一个基本重构,您可以根据自己的需求进行调整。

    您所说的“不工作”到底是什么意思?你能回答这个问题并添加任何错误消息或跳出原因吗?@Robert我会更新,但问题是t没有发送任何电子邮件。我目前不知道为什么我想从Index.js发送这封电子邮件,因为这需要在所有测试之后完成(
    之后
    部分)。我也可以在那里运行此任务吗?因此,您的两个示例都将在index.js中。是的,您可以在
    after()中运行任务。
    hook in/cypress/support/index.js(不要与定义任务的/cypress/plugins/index.js混淆)。谢谢!现在一切都清楚了。发送电子邮件非常有效。我只是想知道如何准备一份简单的测试报告