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专家博主










 
    
评论