python+selenium自动化测试25

🔥《一头扎进》系列之Python+Selenium框架实战篇8-年底升职加薪,年终奖就差最后这一步你知道不???

1.简介

  到上一篇为止,测试报告已经完美的生成,但是你此时不要沾沾自喜,因为还差点意思,你才能升职加薪、拿年终奖。差点啥了???听宏哥给你慢慢道来。那就是把你生成的高端大气上档次的测试报告给领导展示一番,吹嘘一番。不把测试报告发出去好好地在领导面前表现一番,你留着生娃过年吗?这马上就新年了,你还真的留着它生娃啊???辛苦了这么久升职加薪,拿年终奖就靠这一把了。今天这篇文章宏哥就给小伙伴和童鞋们来答疑解惑了,当然了方式方法多种多样的,你可以通过邮件、QQ、微信将测试报告附件手动写邮件发送给相关负责人。这里宏哥讲解如何将测试报告自动发送给相关的负责人。

2.框架结构

  先一睹为快,看看宏哥把邮件模块放在那里了,宏哥认为这个也是固定的只要封装好,在需要用到的地方进行导入和调用就可以了。因为宏哥将它放在了framework文件夹下,如下图所示:

1232840-20191226101542466-436823471.png

3.邮件模块封装

  上边都说了,我们需要封装,因此这里给小伙伴或童鞋们分享一下邮件模块的封装,封装将最新的测试报告发送给测试负责人或者是领导,让他们看看你的成果,这个是你升职加薪,年终奖的砝码。相关代码如下:

3.1代码实现

1232840-20191226103229084-1376317205.png

3.2参考代码
#-*-coding:utf-8-*-

#1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

#2.注释:包括记录创建时间,创建人,项目名称。
'''
Createdon 2016-02-12
@author:北京-宏哥QQ交流群:705269076
Project:《一头扎进》系列之Python+Selenium自动化测试框架实战篇8-年底了还没升职加薪,年终奖全靠它了!!!
'''
#3.导入模块

importos,sys
importsmtplib
importtime
fromemail.mime.textimportMIMEText
fromemail.mime.multipartimportMIMEMultipart

#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)


classSendMail(object):

defget_report(self):#该函数的作用是为了在测试报告的路径下找到最新的测试报告

dirs=os.listdir(reportPath)
dirs.sort()
newreportname=dirs[-1]
print('Thenewreportname:{0}'.format(newreportname))
returnnewreportname#返回的是测试报告的名字

deftake_messages(self):#该函数的目的是为了准备发送邮件的的消息内容
newreport=self.get_report()
self.msg=MIMEMultipart()
self.msg['Subject']='BBAJIT自动化测试报告'#邮件的标题
self.msg['date']=time.strftime('%a,%d%b%Y%H:%M:%S%z')

withopen(os.path.join(reportPath,newreport),'rb')asf:
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)

defsend(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('sendmailsuccess')


if__name__=='__main__':
sendMail=SendMail()
sendMail.send()
3.3运行结果

运行代码后,控制台打印如下图的结果

1232840-20191226103344161-1629913332.png

3.4验证是否是最新测试报告

从3.3中控制台运行结果宏哥打印的结果看出最新的测试报告是:

Thenewreportname:2019-12-25-11_03_42HTMLtemplate.html
我们去存储测试报告文件的test_report文件夹看一下是不是这个:是不是最新的测试报告

1232840-20191226132033906-829957124.png

综上所述:从控制台打印结果和测试报告文件夹的测试报告文件比较,我们可以清楚地看出二者一致,证明达到了预期的结果。

4.查看收件箱

4.1查看收件箱

在邮件的收件箱中查看到,我们刚刚发送的邮件如下图所示:

1232840-20191226104343594-1833421715.png

4.2查看邮件内容

点击查看邮件内容如下图所示:

1232840-20191226104053288-1978326421.png

4.3查看邮件附件

用浏览器打开附件预览查看如下图所示:

1232840-20191226104227906-294137950.png

5.小结

Q:最后说明一下,有的小伙伴或者童鞋们私下会问,那个测试报告能不能在邮件里像在浏览器里一样可以点击?
A:不可以的生成的文件是HTML文件,邮件客户端解析不了,可以通过附件用浏览器打开查看,可以发一个最新测试报告ur地址,点击在浏览器上访问查看测试报告

  好了,今天的分享就到这里吧!!!谢谢各位的耐心阅读。有问题加群交流讨论!!!


扫码关注公众号,更多干货秒得到

  目录