关注测试行业
专注测试技术

Python实现测试报告自动发送邮件

最近公司web测试组正在使用selenium做自动化测试,顺手帮他们把测试结果自动发送邮件模块做了,分享给各位,希望大家喜欢~

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


为啥要用阿帕奇,而不直接邮件直接发送报告内容呢?这不是脱了裤子放屁么。哎,一言难尽,鉴于本人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=’TestReport’,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()

大家直接看注释吧,每部分实现什么功能,我都写的很清晰。有的行略长,估计手机上看会有错行,大家见谅。

最后,希望大家喜欢~

 

赞(0)
转载请注明作者和出处:测试技术学习与分享 » Python实现测试报告自动发送邮件
分享到: 更多 (0)

来捉虫

关注测试行业专注测试技术