《一头扎进》系列之Python+Selenium框架实战篇8 - 年底升职加薪,年终奖就差最后这一步你知道不???
1.简介
到上一篇为止,测试报告已经完美的生成,但是你此时不要沾沾自喜,因为还差点意思,你才能升职加薪、拿年终奖。差点啥了???听宏哥给你慢慢道来。那就是把你生成的高端大气上档次的测试报告给领导展示一番,吹嘘一番。不把测试报告发出去好好地在领导面前表现一番,你留着生娃过年吗?这马上就新年了,你还真的留着它生娃啊???辛苦了这么久升职加薪,拿年终奖就靠这一把了。今天这篇文章宏哥就给小伙伴和童鞋们来答疑解惑了,当然了方式方法多种多样的,你可以通过邮件、QQ、微信将测试报告附件手动写邮件发送给相关负责人。这里宏哥讲解如何将测试报告自动发送给相关的负责人。
2. 框架结构
先一睹为快,看看宏哥把邮件模块放在那里了,宏哥认为这个也是固定的只要封装好,在需要用到的地方进行导入和调用就可以了。因为宏哥将它放在了framework文件夹下,如下图所示:
3. 邮件模块封装
上边都说了,我们需要封装,因此这里给小伙伴或童鞋们分享一下邮件模块的封装,封装将最新的测试报告发送给测试负责人或者是领导,让他们看看你的成果,这个是你升职加薪,年终奖的砝码。相关代码如下:
3.1 代码实现:
3.2 参考代码:
# -*- coding:utf-8 -*- # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行 # 2.注释:包括记录创建时间,创建人,项目名称。 ''' Created on 2019-12-26 @author: 北京-宏哥 QQ交流群:705269076 Project: 《一头扎进》系列之Python+Selenium自动化测试框架实战篇8 - 年底了还没升职加薪,年终奖全靠它了!!! ''' # 3.导入模块 import os, sys import smtplib import time from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart #reportPath = os.path.join(os.getcwd(), 'test_report') # 测试报告的路径 reportPath = os.path.dirname(os.path.abspath('.')) + '/test_report/' # reportPath = "E:\\untitled\\automation_framework_demo\\test_report" # 测试报告的路径 print("打印路径:") print(reportPath) class SendMail(object): def get_report(self): # 该函数的作用是为了在测试报告的路径下找到最新的测试报告 dirs = os.listdir(reportPath) dirs.sort() newreportname = dirs[-1] print('The new report name: {0}'.format(newreportname)) return newreportname # 返回的是测试报告的名字 def take_messages(self): # 该函数的目的是为了 准备发送邮件的的消息内容 newreport = self.get_report() self.msg = MIMEMultipart() self.msg['Subject'] = 'BBA JIT自动化测试报告' # 邮件的标题 self.msg['date'] = time.strftime('%a, %d %b %Y %H:%M:%S %z') with open(os.path.join(reportPath, newreport), 'rb') as f: mailbody = f.read() # 读取测试报告的内容 html = MIMEText(mailbody, _subtype='html', _charset='utf-8') # 将测试报告的内容放在 邮件的正文当中 self.msg.attach(html) # 将html附加在msg里 # html附件 下面是将测试报告放在附件中发送 att1 = MIMEText(mailbody, 'base64', 'utf-8') att1["Content-Type"] = 'application/octet-stream' att1["Content-Disposition"] = 'attachment; filename="TestReport.html"' # 这里的filename可以任意写,写什么名字,附件的名字就是什么 self.msg.attach(att1) def send(self): # recipients = ['xxxx@xxxx.com', 'xxxx@qq.com', 'xxx@xxxxx.com'] # 发送给多个人 recipients = ['hgxxx@nnnx.cn'] #发送给一个人 self.take_messages() self.msg['from'] = 'hg@xxx.cn' # 发送邮件的人,这种是公司邮箱转发 #self.msg['to'] = recipients # 收件人和发送人必须这里定义一下,执行才不会报错。 toaddrs = recipients smtp = smtplib.SMTP() smtp.connect('smtp.mxhichina.com') smtp.ehlo() smtp.login('hg@xxx.cn', '*******xxxx') smtp.sendmail(self.msg['from'], toaddrs, self.msg.as_string()) # 发送邮件 smtp.close() print('sendmail success') if __name__ == '__main__': sendMail = SendMail() sendMail.send()
3.3 运行结果:
运行代码后,控制台打印如下图的结果
3.4 验证是否是最新测试报告
从3.3中控制台运行结果宏哥打印的结果看出最新的测试报告是:
The new report name: 2019-12-25-11_03_42HTMLtemplate.html
我们去存储测试报告文件的test_report文件夹看一下是不是这个:是不是最新的测试报告
综上所述:从控制台打印结果和测试报告文件夹的测试报告文件比较,我们可以清楚地看出二者一致,证明达到了预期的结果。
4. 查看收件箱
4.1 查看收件箱
在邮件的收件箱中查看到,我们刚刚发送的邮件如下图所示:
4.2 查看邮件内容
点击查看邮件内容如下图所示:
4.3 查看邮件附件
用浏览器打开附件预览查看如下图所示:
5. 小结
Q:最后说明一下,有的小伙伴或者童鞋们私下会问,那个测试报告能不能在邮件里像在浏览器里一样可以点击?
A:不可以的生成的文件是HTML文件,邮件客户端解析不了,可以通过附件用浏览器打开查看,可以发一个最新测试报告ur地址,点击在浏览器上访问查看测试报告
好了,今天的分享就到这里吧!!!谢谢各位的耐心阅读。有问题加群交流讨论!!!
您的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!记得随手点波 推荐 不要忘记哦!!!
别忘了点 推荐 留下您来过的痕迹
感谢您花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!
如果您觉得阅读本文对您有帮助,请点一下左下角“推荐”按钮,您的
本文版权归作者和博客园共有,来源网址:https://www.cnblogs.com/du-hong 欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!
公众号(关注宏哥)                                                                                 客服微信