unittest框架执行测试并发送邮件

#coding=utf8

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from HTMLTestRunner import HTMLTestRunner
from email.header import Header
import unittest
import time,os

#==============定义发送邮件 ===============

def send_mail(file_new):
    f = open(file_new,'rb')
    #读取测试报告正文
    mail_body = f.read()
    f.close()

    #发送邮件的
    smtpserver = 'smtp.exmail.qq.com'

    username = '[email protected]'
    passwd = 'Fyf136066'

    sender = '[email protected]'
    receiver = ['[email protected]']
    tname = time.strftime('%Y-%m-%d %H-%M-%S',time.localtime())
    header = u'%s 接口自动化测试报告 ' % tname

   

# 只发正文,不发附件
    msg = MIMEText(mail_body, 'html', 'utf-8')
    msg['Subject'] = Header('自动化测试报告', 'utf-8')
    msg['Header'] = header
    msg['From'] = sender
    msg['To'] = ",".join(receiver)


    #连接发送邮件
    # 发送邮件,端口用465, keyfile = 'vxkdfejinpifbeaj'
    smtp = smtplib.SMTP_SSL(smtpserver, 465)

    smtp.helo(smtpserver)
    smtp.ehlo(smtpserver)

    smtp.login(username, passwd)
    smtp.sendmail(sender, receiver, msg.as_string())

    smtp.quit()


#======================查找最新的测试报告==========================

def new_report(testreport):
    #方式1:
    # lists = os.listdir(testreport)
    # lists.sort(key = lambda fn: os.path.getmtime(testreport + '\\' + fn))
    # file_new = os.path.join(testreport,lists[-1])
    # print(file_new)
    # return file_new

    #方式2:
    dirs = os.listdir(testreport)
    dirs.sort()
    newreportname = dirs[-1]
    print('The new report name: {0}'.format(newreportname))
    file_new = os.path.join(testreport, newreportname)
    return file_new

if __name__ == '__main__':
    #获取当前的项目目录UskidInterface
    testdir = os.path.dirname(os.path.dirname(__file__))

    test_dir = os.path.join(testdir,'testcase')
    test_report = os.path.join(testdir, 'report')
    discover = unittest.defaultTestLoader.discover(test_dir,pattern='test*.py')

    now = time.strftime("%Y-%m-%d %H_%M_%S",time.localtime())
    filename = test_report+'/result_'+now+'.html'
    fp = open(filename,'wb')

    #stream放生成报告的路径
    runner = HTMLTestRunner(stream=fp,title="测试报告",description='用例执行情况:')
    runner.run(discover)
    fp.close()

    new_report = new_report(test_report)
    send_mail(new_report)

猜你喜欢

转载自blog.csdn.net/qq_35958094/article/details/79900403