python实现自动化测试报告邮件实时发送

实现自动化用例执行完成之后,自动发送带html附件的邮件到邮箱

实现思路:
读取html附件内容,添加到邮件正文中,添加html附件,实现用例执行完成,测试报告自动发送到邮箱。
代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import smtplib
from datetime import datetime as dt
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from nose.tools import assert_equal

def send_mail():
"""读取测试报告"""
with open(report_file, 'r', encoding='utf-8') as f_obj:
content = f_obj.read()

msg = MIMEMultipart('mixed')
# 添加邮件内容
msg_html = MIMEText(content, 'html', 'utf-8')
msg.attach(msg_html)

#添加附件
msg_attachment = MIMEText(content, 'html', 'utf-8')
msg_attachment["Content-Disposition"] = 'attachment; filename="{0}"'.format(report_file)
msg.attach(msg_attachment)

msg['Subject'] = mail_subject
msg['Form'] = mail_user
msg['To'] = mail_to
try:
# 连接邮件服务器
s = smtplib.SMTP()
s.connect(mail_host)
# 登录
s.login(mail_user, mail_pwd)
# 发送邮件
s.sendmail(mail_user, mail_to, msg.as_string())
# 退出
s.quit()
except Exception as e:
print("Exception", e)

class Mailsend():

def test_mul(self):
a = 1
b = 2
res = 3
assert_equal(res, a+b)

if __name__ == '__main__':
# 邮件服务器
mail_host = 'smtp.163.com'
# 发件人地址
mail_user = '***'
# 发件人密码
mail_pwd = '***'
# 邮件标题
mail_subject = u'NoseTests_测试报告_{0}'.format(dt.now().strftime('%Y%m%d'))
# 收件人地址
mail_to = '***'
# 测试报告名称
report_file = 'NoseTestReport.html'

# 运行nosetests进行自动化测试并生成测试报告
print('Run NoseTests Now...')
os.system('nosetests -v mail_html.py:Mailsend --with-html --html-file=NoseTestReport.html')

# 发送测试报告邮件
print('Send Test Report Mail Now...')
send_mail()

tips:

1
2
3
python客户端进行163,126邮箱邮件发送前,需要在web版邮箱中设置允许客户端访问,设置客户端授权码

设置完授权码之后,此时的客户端登录密码为授权码,不是原来的邮箱密码
文章目录
|