(八)PC自动化测试框架之自定义框架--发送测试邮件(java)

框架搭建完成,用例可以执行,测试报告可以生存,那么肯定要考虑如何发送测试报告呢?

发送测试邮件

  • 一:单独建一个java文件,用于存放邮件的相关配置

这个文件主要是用于测试结果的邮件发送,这个文件依赖另外两个文件,
host(邮件服务器名称),
user(邮箱登录名) ,
password(邮箱登录密码),
sender(邮件发送者),
receiver(多个接收者,中间用","分隔,如下图),
cc(邮件抄送者,选填)。

内容如下:
在这里插入图片描述

  • 二:发送邮件

我们可以新建一个help包,然后创建一个发送邮件的SendEmail类
在这里插入图片描述
发送邮件的内容如下:

package help;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import data.EmailData;
import main.TestMain;

/**
 * 
 * @author zx08443
 *
 */

public class SendEmail {
	static String host = EmailData.Host;
	static String user = EmailData.User;
	static String password = EmailData.Password;
	static String sender = EmailData.Sender;
	static String receiver = EmailData.Receiver;
	static String cc = EmailData.Cc;

	public static void Email(String filename) {      //调用发送邮件的方法时,传入一个参数,参考https://blog.csdn.net/weixin_43574761/article/details/95637680  这篇博客
		String email_body = new String();
		String name = filename;
		email_body = function.WriteOrReadFile.readValueFromFile(".\\test-report\\"+name+"\\html\\overview.html");
		Date date = new Date();
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		String today = dateFormat.format(date);
		Properties props = new Properties();
		props.put("mail.smtp.host", host);
		props.put("mail.smtp.socketFactory.port", "465");
		props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.port", "25");
		Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(user, password);
			}
		});
		try {
			Message message = new MimeMessage(session);
			message.setFrom(new InternetAddress(sender));
			message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiver));
			if (cc != "") {
				message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
			}
			message.setSubject("PC自动化测试报告" + today);
			String url = "http://xx.xx.xx.xx:xxxx/" + name + "/html/index.html";
			MimeBodyPart html = new MimeBodyPart();
			String body = "<div style='font-size:40px;color:white;'>0</div><a href=\"http://xx.xx.xx.xx/\"><span style='display:inline-block;font-size:20px;color:red;margin-left:40px;'>查看测试报告详情</span></a>";
			String content = body.replace("http://xx.xx.xx.xx/", url);
			html.setContent(email_body + content, "text/html;charset=utf-8");
			Multipart multipart = new MimeMultipart();
			multipart.addBodyPart(html);
			message.setContent(multipart);
			Transport.send(message);
			System.out.println("=====PC自动化测试邮件已发送,请注意查收!!!=====");
		} catch (MessagingException e) {
			throw new RuntimeException(e);
		}
	}

}




在这里插入图片描述
有疑问的加V了解详情:zx1187463903

如上图注意:
由于ReportNg插件的测试结果呈现在index.html中,但它由\html这里面的多个文件组成,所以通过在邮件里加入一个超链接,点击跳转到另一个网页查看测试报告详情页,这样处理的。所以,做以下设置:
1:本地新建一个站点,做好基本配置,如下图。
在这里插入图片描述
2:在Email的方法中,将站点的URL地址放在email_body中即可。这样就可以做到下面的效果,邮件中查看测试报告的详细内容。为什么这里做了一个url替换呢,因为reportNg,每次运行之后会覆盖上一次的运行结果,这样不便于结果的追查,所以我们就考虑重新指定测试结果保存的文件夹,文件夹名称根据年月日时分来定义,不会出现重复的情况。所以每个邮件里发送的链接都是不一样的,对应着每次运行的结果。
在这里插入图片描述
邮件的内容如下图:
在这里插入图片描述
点击超链接:“查看测试报告详情” 效果如下:
在这里插入图片描述
如果你也搞定了,开心的同时请小编喝个咖啡也极好的呀。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43574761/article/details/95633393