Selenium 2自動化測試實戰38(整合自動發郵件功能)

整合自動發郵件功能html

解決了前面的問題後,如今就能夠將自動發郵件功能集成到自動化測試項目中了。下面從新編輯runtest.py文件python

#runtest.py
#coding:utf-8 from HTMLTestRunner import HTMLTestRunner from email.mime.text import MIMEText from email.header import Header import smtplib import unittest,time,os #===================定義發送郵件====================== def send_mail(file_new): f=open(file_new,'rb') mail_body=f.read() f.close() msg=MIMEText(mail_body,'html','utf-8') msg['subject']=Header(u"自動化測試報告",'utf-8') msg['from']='xxxxxx@sina.com' msg['to']='xxxxxx@qq.com' smtp=smtplib.SMTP() smtp.connect("smtp.sina.com") smtp.login("xxxxx","xxxxxxx") smtp.sendmail("xxxxxxx@sina.com","xxxxxxxx@qq.com",msg.as_string()) smtp.quit() print('email has send out !') #===================查找測試報告目錄,找到最新生成的測試報告文件====================== def new_report(testreport): lists=os.listdir(testreport) lists.sort(key=lambda fn:os.path.getmtime(testreport+"\\"+fn)) file_new=os.path.join(testreport,lists[-1]) print(file_new) return file_new if __name__=="__main__": test_dir='F:\\study\\web_demo1\\test_case' test_report='F:\\study\\web_demo1\\report' discover=unittest.defaultTestLoader.discover(test_dir,pattern='test_*.py') now=time.strftime('%Y-%m-%d_%H_%M_%S') filename=test_report+"\\"+now+"result.html" fp=open(filename,'wb') runner=HTMLTestRunner(stream=fp,title=u"測試報告",description=u"用例執行狀況:") runner.run(discover) fp.close() newreport=new_report(test_report) send_mail(newreport)#發送測試報告

  

執行後,結果以下圖所示:web

 

分析以下:
1.經過unittest框架的discover()找到匹配測試用例,由HTMLTestRunner的run()方法執行測試用例並生成最新的測試報告。
2.調用new_report()函數找到測試報告目錄(report)下最新生成的測試報告,返回測試報告的路徑。
3.將獲得的最新測試報告的完整路徑傳給send_mail()函數,實現發郵件功能。框架

相關文章
相關標籤/搜索