先上图,无图无真相,思路流程如下:

python 邮件自动转发 python每天自动发送邮件_数组

为啥要用阿帕奇,而不直接邮件直接发送报告内容呢?这不是脱了裤子放屁么。哎,一言难尽,鉴于本人python水平有限,在调试过程中遇到个各种各样的邮件格式报错,无法短时间内解决,只好采取笨办法,将报告放到阿帕奇下,邮件发送链接,虽然不那么直观,但是多点击一下鼠标貌似也不是太麻烦,哈哈,无耻的给自己找个借口。

具体实现代码如下(python实现):

# -*- coding:UTF-8 -*-
import HTMLTestRunner
import os,unittest,time
import smtplib,email,sys
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
#将测试用例导入,此处为笔者的例子,各位不能直接用哦
from test_unittest_02 import SearchTests
from test_unittest_03 import HomePageTest
from test_unittest_04 import MainPageTest
from test_unittest_05 import RegisterNewUser
#得到系统时间,并拼凑成生成的报告名称,时间+字符串,不会生成重复名称
systime =
time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))
logname = "test_result"+systime+".html"
#通过1个循环,将各用例都装载到用例集中
all_lists =[SearchTests,HomePageTest,MainPageTest,RegisterNewUser]
x = []
for list in all_lists:
y =
unittest.TestLoader().loadTestsFromTestCase(list)
x.append(y)
smoke_tests = unittest.TestSuite(x)
#输出测试结果,我这里写到web服务的目录下,这样大家直接点链接就能打开
outfile =
open("/Library/WebServer/Documents/"+logname, "w")
#configure htmltestrunner options
runner =
HTMLTestRunner.HTMLTestRunner(stream=outfile,title='Test
Report',description='Smoke Tests')
#发送邮件模块
def sentmail(file_new):
#拼接邮件内容,放到1个数组中,如果有多个内容,可以通过数组的值控制发送哪个。
result_name =
["测试结果地址:
"+"http://172.16.148.159"+'/'+file_new]
#发信邮箱
mail_from="用来发邮件的邮箱地址"
#收信邮箱,这里需要用数组,可以有多个地址,用逗号隔开
mail_to=["收件人a的地址",”收件人b的地址”]
#定义正文
msg=MIMEText(result_name[0],_subtype='plain',_charset='utf-8')
#定义标题
msg['Subject']='web自动化测试报告'
smtp=smtplib.SMTP('smtp.office365.com',587)
smtp.ehlo()
smtp.starttls()
#用户名密码
smtp.login("发邮件用的邮箱地址","发邮件用的邮箱密码")
smtp.sendmail(mail_from,mail_to,msg.as_string())
smtp.quit()
#找到最新的测试报告,调用发邮件功能
def sendreport():
result_dir =
'/Library/WebServer/Documents/'
#将文件都放到一个数组中
lists=os.listdir(result_dir)
#将目录下的文件排序
lists.sort()
#找到最新生成的文件
file_new =
os.path.join(lists[-1])
#调用发邮件模块
sentmail(file_new)
if __name__ == "__main__":
#执行测试用例
runner.run(smoke_tests)
#执行发邮件
sendreport()