Unittest 接口和 UI 自动化测试框架中的发送邮件服务如何使用?
作者:虫无涯
- 2023-02-22 陕西
本文字数:1250 字
阅读完需:约 4 分钟

在写 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 os
def 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']) # 填写需要发送给对方邮件账号,用逗号隔开,可写多个
复制代码
划线
评论
复制
发布于: 刚刚阅读数: 4
版权声明: 本文为 InfoQ 作者【虫无涯】的原创文章。
原文链接:【http://xie.infoq.cn/article/698a85bf1ffb31e710eda8986】。文章转载请联系作者。
虫无涯
关注
专注测试领域各种技术研究、分享和交流~ 2019-12-11 加入
CSDN测试领域优质创作者 | CSDN博客专家 | 阿里云专家博主 | 华为云享专家 | 51CTO专家博主










评论