https://www.cnblogs.com/du-hong/default.html?page=14
Version:1.0StartHTML:000000210EndHTML:000018913StartFragment:000002303EndFragment:000018833StartSelection:000002353EndSelection:000018815SourceURL:https://www.cnblogs.com/du-hong/p/10812533.html
簡介
前邊幾篇布轿,已經(jīng)教小伙伴們掌握了如何生成HTML的測試報告灼芭,那么生成測試報告荣瑟,我們也不能放在那里不管了骨杂,這樣即使你報告在漂亮墨状,領(lǐng)導(dǎo)也看不到拉馋。因此如果想向領(lǐng)導(dǎo)匯報工作蚯瞧,不僅需要提供更直觀的測試報告痕支。而是我們需要將生
成測試報告發(fā)個相關(guān)的負責(zé)人待讳,需要他們看一下測試結(jié)果芒澜,把控一下項目的接口有風(fēng)險,會不會影響項目進度等等一些事吧创淡。
發(fā)郵件需要用到python兩個模塊痴晦,smtplib和email,這倆模塊是python自帶的琳彩,只需import即可使用誊酌。smtplib模塊主要負責(zé)發(fā)送郵件,email模塊主要負責(zé)構(gòu)造郵件露乏。其中MIMEText()定義郵件正文碧浊,Header()定義郵件標題。MIMEMulipart模塊構(gòu)造帶附件瘟仿。
大致思路流程
1箱锐、通過unittest框架的discover()找到匹配的測試用例,由HTMLTestRunner的run()方法執(zhí)行測試用例并生成最新的測試報告劳较。
2驹止、調(diào)用new_report()函數(shù)找到測試報告目錄下最新生成的測試報告浩聋,返回測試報告的路徑。
3幢哨、將得到的最新測試報告的完整路徑傳給send_mail()函數(shù)赡勘,實現(xiàn)發(fā)郵件功能嫂便。
4捞镰、第一步,前邊幾篇毙替,我們都詳細介紹了岸售,所以這篇就不在贅述了,直接從第二步厂画、第三步開始講解凸丸。
查找最新測試報告?
定義發(fā)送郵件
1、查看一下袱院,源碼如下:
2屎慢、仿照源碼進行改造
參考代碼
# coding=utf-8#1.先設(shè)置編碼,utf-8可支持中英文忽洛,如上腻惠,一般放在第一行
#2.注釋:包括記錄創(chuàng)建時間,創(chuàng)建人欲虚,項目名稱集灌。'''Created on2019-5-6@author: 北京-宏哥
Project:學(xué)習(xí)和使用將測試報告通過郵件發(fā)出去'''#3.導(dǎo)入unittest模塊
import unittest
import osfrom email.mime.text import MIMETextfrom email.header import Header
import smtplib
#4.編寫測試用例和斷言
def all_case():
? ? # 待執(zhí)行用例的目錄
? ? #case_dir ="C:\\Users\\DELL\\PycharmProjects\\honggetest\\case"? ? case_dir = os.path.join(os.getcwd(),"case")
? ? testcase = unittest.TestSuite()
? ? discover = unittest.defaultTestLoader.discover(case_dir,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pattern="test*.py",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? top_level_dir=None)
? ? # #discover方法篩選出用例,循環(huán)添加到測試套件中
? ? # fortest_suitin discover:
? ? #? ? fortest_casein test_suit:
? ? #? ? ? ? #添加用力到testcase
? ? #? ? ? ? testcase.addTests(test_case)
? ? # print(testcase)
? ? testcase.addTests(discover)? # 直接加載 discover? ? 可以兼容python2和3
? ? print(testcase)
? ? return testcase
# ==============定義發(fā)送郵件==========def send_mail(file_new):
? ? f = open(file_new,'rb')
? ? mail_body = f.read()
? ? f.close()
? ? username ='nXXply@ceXXx.cn'? #發(fā)件箱用戶名
? ? password ='XXX@@123'? ? ? ? #發(fā)件箱密碼
? ? sender ='noXXy@ceXXx.cn'? ? #發(fā)件人郵箱
? ? receiver = ['hongge@XXX.cn']? #收件人郵箱
? ? # 郵件正文是MIMEText
? ? msg = MIMEText(mail_body,'html','utf-8')
? ? # 郵件對象
? ? msg['Subject'] = Header("自動化測試報告",'utf-8').encode()
? ? msg['From'] = Header(u'測試機 <%s>'%sender)
? ? msg['To'] = Header(u'測試負責(zé)人 <%s>'%receiver)
? ? msg['date'] = time.strftime("%a,%d %b %Y %H:%M:%S %z")
? ? #發(fā)送郵件
? ? smtp = smtplib.SMTP()
? ? smtp.connect('smtp.mxhichina.com')? # 郵箱服務(wù)器
? ? smtp.login(username, password)? # 登錄郵箱
? ? smtp.sendmail(sender, receiver, msg.as_string())? # 發(fā)送者和接收者
? ? smtp.quit()
? ? print("郵件已發(fā)出复哆!注意查收欣喧。")
# ======查找測試目錄,找到最新生成的測試報告文件======def new_report(test_report):
? ? lists = os.listdir(test_report)? # 列出目錄的下所有文件和文件夾保存到lists
? ? lists.sort(key=lambda fn: os.path.getmtime(test_report +"\\"+ fn))? # 按時間排序
? ? file_new = os.path.join(test_report, lists[-1])? # 獲取最新的文件保存到file_new
? ? print(file_new)
? ? return file_newif__name__ =="__main__":
? ? # 返回實例
? ? runner = unittest.TextTestRunner()
? ? #導(dǎo)入第三方模塊HTMLTestRunner
? ? import HTMLTestReportCN
? ? import time
? ? # 獲取當前時間梯找,這樣便于下面的使用唆阿。
? ? now = time.strftime("%Y-%m-%M-%H_%M_%S", time.localtime(time.time()))
? ? #保存生成報告的路徑
? ? report_path ="C:\\Users\\DELL\\PycharmProjects\\honggetest\\report\\"+now+"_result.html"? ? fp = open(report_path,'wb')
? ? runner = HTMLTestReportCN.HTMLTestRunner(stream=fp,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? title=u"這是我的自動化測試用例",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? description=u"用例執(zhí)行情況",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? verbosity =2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? )
? ? # run 所有用例
? ? runner.run(all_case())
? ? #關(guān)閉文件,記住用open()打開文件后一定要記得關(guān)閉它锈锤,否則會占用系統(tǒng)的可打開文件句柄數(shù)驯鳖。
? ? fp.close()
? ? #測試報告文件夾
? ? test_path ="C:\\Users\\DELL\\PycharmProjects\\honggetest\\report\\"? ? new_report = new_report(test_path)
? ? send_mail(new_report)? # 發(fā)送測試報告
小結(jié)
1、遇到的問題及解決方法
(1)將生成的測試報告的保存路徑和查找測試報告的路徑混淆會報如下錯誤
(2)解決方法
a牙咏、我們先來分析一下原因臼隔,剛開始我查了資料還覺得是不是數(shù)組越界,后來感覺不對妄壶,就復(fù)制粘貼到我的電腦報如下錯誤摔握,確實找不到
b、接著Ctrl+R復(fù)制進去丁寄,運行出現(xiàn)如下這是才知道查找最新的測試報告遍歷的根本不是一個目錄而是一個文件
c氨淌、解決辦法不是文件夾修改成測試報告的文件夾是不是就可以泊愧,做如下簡單地修改就可以了
d、完了把test_path拷貝在我電腦和運行處盛正,兩個界面一樣分別定位到測試報告删咱。這樣就可以遍歷,這是不用試 一定可以成功分別如下:
我的電腦
運行
e豪筝、代碼運行結(jié)果
f痰滋、到收件箱可以看到測試報告
?2、發(fā)送的郵件看不到發(fā)件人和收件人续崖,如圖
?a敲街、解決辦法:
加兩行代碼即可
b、再次運行收到郵件
????為了方便大家在移動端也能看到我分享的博文严望,現(xiàn)已注冊個人微信公眾號多艇,掃描左下方二維碼即可,歡迎大家關(guān)注像吻,有時間會及時分享相關(guān)技術(shù)博文峻黍。
為了方便大家互動討論相關(guān)技術(shù)問題,現(xiàn)已組建專門的微信群拨匆,由于微信群滿100姆涩,請您掃描右下方宏哥個人微信二維碼拉你進群(請務(wù)必備注:已關(guān)注公眾號進群),歡迎大家加入這個大家庭涮雷,我們一起暢游知識的海洋阵面。
感謝您花時間閱讀此篇文章,如果您覺得這篇文章你學(xué)到了東西也是為了犒勞下博主的碼字不易不妨打賞一下吧,讓博主能喝上一杯咖啡洪鸭,在此謝過了样刷!
如果您覺得閱讀本文對您有幫助,請點一下左下角“推薦”按鈕览爵,您的“推薦”將是我最大的寫作動力置鼻!另外您也可以選擇【關(guān)注我】,可以很方便找到我蜓竹!
本文版權(quán)歸作者和博客園共有箕母,來源網(wǎng)址:https://www.cnblogs.com/du-hong歡迎各位轉(zhuǎn)載,但是未經(jīng)作者本人同意俱济,轉(zhuǎn)載文章之后必須在文章頁面明顯位置給出作者和原文連接嘶是,否則保留追究法律責(zé)任的權(quán)利!