写点什么

Unittest 接口和 UI 自动化测试框架中的发送邮件服务如何使用?

作者:虫无涯
  • 2023-02-22
    陕西
  • 本文字数:1250 字

    阅读完需:约 4 分钟

Unittest接口和UI自动化测试框架中的发送邮件服务如何使用?

在写 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
用户头像

虫无涯

关注

专注测试领域各种技术研究、分享和交流~ 2019-12-11 加入

CSDN测试领域优质创作者 | CSDN博客专家 | 阿里云专家博主 | 华为云享专家 | 51CTO专家博主

评论

发布
暂无评论
Unittest接口和UI自动化测试框架中的发送邮件服务如何使用?_Python_虫无涯_InfoQ写作社区