python 自动化实现定时发送html报告到邮箱
# coding =utf-8import os
import unittest
import time
import datetime
import smtplib
from email.mime.text import MIMEText
from HTMLTestRunner import HTMLTestRunner
def all_cases():
case_path = os.getcwd()
discover = unittest.defaultTestLoader.discover(case_path, pattern='test*.py', top_level_dir=None)
return discover
def run(report_path):
with open(report_path, 'wb') as f:
runner = HTMLTestRunner(stream=f, title="interface report", description="results like following:", verbosity=2)
runner.run(all_cases())
f.close()
def timer(report_path, hour, minute):
flag = 1
while flag:
while flag:
now = datetime.datetime.now()
if now.hour == hour and now.minute == minute:
break
time.sleep(10)
# run(report_path)
email_send(report_path)
flag = 0
def email_send(report_path,str_sender,receiver,author_code,smtp_server="smtp.qq.com",smtp_int_port=465):
run(report_path)
msg_from = str_sender # sender
passwd = author_code # authentication code
msg_to = receiver # receiver
#如果多个接受者用列表 ['1932390299@qq.com','1393232463@qq.com']
subject = "python_email_test"
f = open(report_path, 'rb')
mail_body = f.read()
f.close()
msg=MIMEText(mail_body, _subtype='html', _charset='utf-8')
msg['Subject'] = subject
msg['From'] = msg_from
msg['To'] = msg_to
try:
s = smtplib.SMTP_SSL(smtp_server, smtp_int_port)
s.login(msg_from, passwd)
s.sendmail(msg_from, msg_to, msg.as_string())
print("send success")
except smtplib.SMTPException as e:
print("send fail")
finally:
s.quit()
def get_report_path():
job_name = time.strftime('job_%Y%m%d%H%M%S', time.localtime()) + '.html'
path = os.path.join(os.path.dirname(__file__), 'report')
report_path = os.path.join(path, job_name)
return report_path
上面是很久以前的没更新:邮件发送见最新的文章封装很全面写了一次https://www.cnblogs.com/SunshineKimi/p/10629267.html
定时计划参考最新的机制schedule文章 :https://www.cnblogs.com/SunshineKimi/p/10630784.html
报告选型见我的报告模块:https://www.cnblogs.com/SunshineKimi/category/1426942.html
以上是 python 自动化实现定时发送html报告到邮箱 的全部内容, 来源链接: utcz.com/z/388964.html