Python自动化——通过邮件发送测试报告

Posted 水深则流缓

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python自动化——通过邮件发送测试报告相关的知识,希望对你有一定的参考价值。

1. 自动化测试报告

  • 自动化的测试报告一般会通过邮件或钉钉机器人自动发送,或是直接显示在质量管理平台上来输出数据供大家查看。这里简单的说下Python使用SMTP发送邮件。

2. Python SMTP发送邮件

  • SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

3. 使用其他邮件服务商的 SMTP 访问

  • 这里来用网易的163邮箱举例子
  • 登陆邮箱然后进入下图的页面,该开启的开启

  

  • 都开启会要设置一下客户端授权码,记下来就可以了,后面会用到

4. 读取配置文件config.ini,发送邮件

config.ini文件
 1 [EMAIL]
 2 on_off = on
 3 # 邮件主题
 4 subject = 接口自动化测试报告
 5 #发送邮件信息
 6 mail_host = smtp.163.com
 7 mail_user = 发送人邮箱@163.com
 8 # 163邮箱授权密码
 9 mail_pass = 密码或授权密码
10 # 发送人
11 sender = 发送人@163.com
12 # 接收人
13 receivers = 接收人@qq.com
readConfig.py读取配置文件
 1 import os
 2 import configparser
 3 import getPathInfo
 4 
 5 path = getPathInfo.get_Path()  # 调用实例化
 6 config_path = os.path.join(path, \'config.ini\')  # 在path路径下再加一级,即绝对路径\\config.ini
 7 config = configparser.ConfigParser()  # 调用外部的读取配置文件的方法,实例化config
 8 config.read(config_path, encoding=\'utf-8\')
 9 
10 
11 class ReadConfig():
12     def get_http(self, name):
13         value = config.get(\'HTTP\', name)
14         return value
15 
16     def get_email(self, name):
17         value = config.get(\'EMAIL\', name)
18         return value
19 
20     def get_mysql(self, name): 
21         value = config.get(\'DATABASE\', name)
22         return value
getPathInfo.py获取项目绝对路径
1 import os
2 
3 
4 def get_Path():
5     path = os.path.split(os.path.realpath(__file__))[0]
6     return path
sendEmail.py以上传附件的形式发送邮件
 1 import os
 2 import smtplib
 3 import time
 4 import readConfig
 5 import getPathInfo
 6 from email.mime.text import MIMEText  # 发送正文
 7 from email.mime.multipart import MIMEMultipart  # 发送多个部分
 8 from email.mime.application import MIMEApplication  # 发送附件
 9 from email.header import Header  # 从email包引入Header()方法,是用来构建邮件头
10 
11 read_conf = readConfig.ReadConfig()
12 mail_host = read_conf.get_email(\'mail_host\')  # 从配置文件中读取,邮件host
13 mail_user = read_conf.get_email(\'mail_user\')  # 从配置文件中读取,登录邮箱用户名
14 mail_pass = read_conf.get_email(\'mail_pass\')  # 从配置文件中读取,登录邮箱密码
15 subject = read_conf.get_email(\'subject\')  # 从配置文件中读取,邮件主题
16 sender = read_conf.get_email(\'sender\')  # 从配置文件中读取,邮件发送人
17 receivers = read_conf.get_email(\'receivers\')  # 从配置文件中读取,邮件收件人
18 mail_path = os.path.join(getPathInfo.get_Path(), \'result\', \'report.html\')  # 获取测试报告路径
19 
20 
21 class TestMail(object):
22 
23     def send_mail(self):
24         # 构造一个邮件体:正文、附件
25         msg = MIMEMultipart()  # 邮件体
26         msg[\'From\'] = sender  # 发件人
27         msg[\'To\'] = receivers  # 收件人
28         tm = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))  # 获取系统时间
29         msg[\'Subject\'] = Header(subject + \'_\' + tm, \'utf-8\')  # 邮件主题
30         # 构建正文
31         content = """
32                             执行测试中……
33                             测试已完成!!
34                             生成报告中……
35                             报告已生成……
36                             报告已邮件发送!!
37                             """
38         email_body = MIMEText(content, \'plain\', \'utf-8\')
39         msg.attach(email_body)  # 将正文添加到邮件体中
40         # 构建附件
41         att = MIMEApplication(open(mail_path, \'rb\').read())  # 打开附件
42         att.add_header("Content-Disposition", "attachment", filename=\'测试报告.html\')  # 为附件命名
43         msg.attach(att)  # 添加附件到邮件体中
44 
45         try:
46             smtpObj = smtplib.SMTP()
47             smtpObj = smtplib.SMTP_SSL(mail_host, 465)  # 使用smtp协议发送邮件,SSL协议来进行加密传输,465为端口号
48             smtpObj.login(mail_user, mail_pass)  # 邮箱登录
49             smtpObj.sendmail(sender, receivers, msg.as_string())  # 发送邮件
50             print(\'send mail ok\')
51             smtpObj.quit()
52         except smtplib.SMTPException:
53             print(\'send mail fail\')
54 
55 
56 if __name__ == "__main__":
57     send = TestMail()
58     send.send_mail()
最后效果

 

 

 

优化:可加上定时发送

借鉴博客:

https://blog.csdn.net/baidu_39372836/article/details/98034448?depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-6&utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-6

https://blog.csdn.net/weixin_44386231/article/details/104762553?depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-5&utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-5

以上是关于Python自动化——通过邮件发送测试报告的主要内容,如果未能解决你的问题,请参考以下文章

Appium+python 自动发送邮件

python 生成测试报告并发送邮件

selenium+BeautifulReport+python自动化+用例不通过的时候发送邮件

selenium+python自动化88-用例不通过的时候发送邮件

selenium+python自动化89-用例不通过的时候发送邮件

selenium+python自动化89-用例不通过的时候发送邮件