在写Unittest接口和UI自动化测试的时候,须要封装邮件模块来进行发送邮件。如何做呢?简略做一下整顿。
1、在框架工具集中封装send_mail.py
如图,我的在common中封装了send_mail.py
代码如下:
#coding=utf-8from email.mime.text import MIMETextimport timeimport smtplibimport getpassfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.mime.base import MIMEBasefrom email import encodersimport emailimport osdef sendmain(file_path,mail_to = 'xxxx@sdsdsd.com'): mail_from = 'xxx@126.com' # 发送邮件账号 f = open(file_path,'rb') mail_body=f.read() f.close() #msg = email.MIMEMultipart.MIMEMultipart() msg = MIMEMultipart() # 结构MIMEBase对象做为文件附件内容并附加到根容器 contype = 'application/octet-stream' maintype, subtype = contype.split('/', 1) ## 读入文件内容并格式化 data = open(file_path, 'rb') file_msg = MIMEBase(maintype, subtype) file_msg.set_payload(data.read( )) data.close( ) encoders.encode_base64(file_msg) ## 设置附件头 basename = os.path.basename(file_path) file_msg.add_header('Content-Disposition', 'attachment', filename = basename) msg.attach(file_msg) print(u'msg 附件增加胜利') msg1 = MIMEText(mail_body,_subtype='html',_charset='utf-8') msg.attach(msg1) if isinstance(mail_to,str): msg['To'] = mail_to else: msg['To'] = ','.join(mail_to) msg['From'] = mail_from msg['Subject'] = u'zzzz我的项目接口自动化测试' msg['date']=time.strftime('%Y-%m-%d-%H_%M_%S') print(msg['date']) smtp = smtplib.SMTP() smtp.connect('smtp.126.com') smtp.login('xxx@126.com','123456') # 发送邮件账号密码 smtp.sendmail(mail_from, mail_to, msg.as_string()) smtp.quit() print('email has send out !')if __name__=='__main__': sendmain('../report/2017-08-18-10_18_57_result.html')
2、 在主框架入口调用邮件模块
# HTML报告 now = datetime.datetime.now().strftime('%Y-%m-%d_%H_%M_%S') htmlreport = reportpath + "/" + now + r"result.html" print("测试报告生成地址:%s"% htmlreport) fp = open(htmlreport, "wb") runner = HTMLTestRunner.HTMLTestRunner(stream=fp, verbosity=2, title="xxxx我的项目接口自动化测试报告", description="用例执行状况") # 调用add_case函数返回值 runner.run(all_case) fp.close() time.sleep(2) sendmain(htmlreport, mail_to=['yyyyy@qq.com']) # 填写须要发送给对方邮件账号,用逗号隔开,可写多个