python接口自動化(二十九)--html測試報告通過郵件發(fā)出去——上(詳解)【北京-宏哥】

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)利!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛛碌,一起剝皮案震驚了整個濱河市聂喇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖希太,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件克饶,死亡現(xiàn)場離奇詭異,居然都是意外死亡誊辉,警方通過查閱死者的電腦和手機矾湃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堕澄,“玉大人邀跃,你說我怎么就攤上這事奈偏∥豚郑” “怎么了躯护?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵惊来,是天一觀的道長。 經(jīng)常有香客問我棺滞,道長裁蚁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任继准,我火速辦了婚禮枉证,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘移必。我一直安慰自己室谚,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布崔泵。 她就那樣靜靜地躺著秒赤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪憎瘸。 梳的紋絲不亂的頭發(fā)上入篮,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音幌甘,去河邊找鬼潮售。 笑死,一個胖子當著我的面吹牛锅风,可吹牛的內(nèi)容都是我干的酥诽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼皱埠,長吁一口氣:“原來是場噩夢啊……” “哼肮帐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起漱逸,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤泪姨,失蹤者是張志新(化名)和其女友劉穎游沿,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肮砾,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡诀黍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了仗处。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片眯勾。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖婆誓,靈堂內(nèi)的尸體忽然破棺而出吃环,到底是詐尸還是另有隱情,我是刑警寧澤洋幻,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布郁轻,位于F島的核電站,受9級特大地震影響文留,放射性物質(zhì)發(fā)生泄漏好唯。R本人自食惡果不足惜燥翅,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一骑篙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧森书,春花似錦靶端、人聲如沸胯府。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至乘盼,卻和暖如春升熊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绸栅。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工级野, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粹胯。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓蓖柔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親风纠。 傳聞我的和親對象是個殘疾皇子况鸣,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容