python发送测试报告邮件

   记录学习:

   python实现自动发送邮件功能,也是自动化测试的一个重要场景。想要在自动化测试结果出来后,邮箱可以立刻受到结果邮件。

   SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

   python的smtplib模块对SMTP协议进行了简单封装,实现了方便的途径来发送邮件,使用SMTP的sendmail方法来发送邮件。

   例1:发送HTML格式的邮件

    我用的是163邮箱发送的,Server就是smtp.163.com,其他邮箱的则换成别的,还要先到163邮箱中去开启SMTP服务

    

              

    最后邮箱也成功接收到邮件:

        

  下面是发送自动化测试报告的邮件的,

  

 

 

   get_report()方法用于获取最新的测试报告,上面已经通过变量获取到了测试报告的目录,然后使用os.listdir()方法获取目录下的所有文件及文件夹,利用sort()方法对目录下的文件及文件夹按时间重新排序。list[-1]取到的就是最新生成的文件。

图片接上:

    

 

  最后邮箱也是成功收到了测试报告邮件:

  

 

 

   附件通过浏览器打开;

这次练习遇到的一些问题:

①要使用SMTP协议得先去邮箱设置中开启这个服务

②smtp.login(user,pwd)

这里一开始输入的是邮箱地址和邮箱登录密码,结果在执行代码的时候报授权认证的错误

raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed')

后面百度后问题是因为开启服务的时候有一个【授权码】,所以在代码中那个填密码的变量应该使用邮箱开启SMTP服务后出现的授权码,这样就可以成功进行发送邮件。

③get_report()获取最新的测试报告的这个方法中,之前一开始只是单纯的使用dirs.sort(),结果执行代码的时候一直没能取到最新的测试报告,后面翻阅了工具书改了下代码才成功了的,key=lambda fn:os.path.getmtime(report_path+'/'+fn)

dirs.sort(key=lambda fn:os.path.getmtime(report_path+'/'+fn))

 

 

 

 

 

 

 

 

  

  

 

 

 

 

 

 

 

 

 

     

posted @ 2020-10-11 12:33  xyttt06  阅读(354)  评论(0编辑  收藏  举报