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

上一篇 / 下一篇  2015-08-18 17:53:27 / 个人分类:测试

最近公司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='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()

 

大家直接看注释吧,每部分实现什么功能,我都写的很清晰。

最后,希望大家喜欢~


TAG:

引用 删除 minzhung   /   2016-01-28 13:28:52
5
jacobsong的个人空间 引用 删除 jacobsong   /   2015-10-12 15:31:28
5
jackyyu 引用 删除 yudingchu   /   2015-08-19 11:50:48
5
 

评分:0

我来说两句

我的栏目

日历

« 2024-04-19  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 61234
  • 日志数: 30
  • 建立时间: 2014-08-25
  • 更新时间: 2015-12-07

RSS订阅

Open Toolbar