標籤:png 這一 param except false 模組 查看 stat 發郵件
前言
實現需求:當測試案例全部通過的時候,不發郵件,當用例出現Error或Failure的時候發送郵件
解決思路:產生html測試報告後,用bs4解析html頁面,寫個函數判斷頁面上是都有不通過的記錄
html報告
1.查看html報告,主要看Status這一行是否會出現Failure 或 Error 的記錄
bs4解析html
1.bs4模組在我的部落格上上海-悠悠之前有過介紹,就不重複寫了,先定位html頁面元素,先通過它的class屬性:attribute定位到這三行記錄
2.取出最後一行,然後讀出常值內容。
# coding:utf-8from bs4 import BeautifulSoup# 開啟html檔案,讀取報告內容with open("result.html", "r") as fp: f = fp.read() # 讀報告# 解析html,尋找class屬性attributesoup = BeautifulSoup(f, "html.parser")status = soup.find_all(class_="attribute")# 列印尋找內容print(status)print("qq交流群:226296743")result = status[2].contents[-1] # 擷取報告結果print(result)
運行結果:
[<p class="attribute"><strong>Start Time:</strong> 2018-01-18 16:35:49</p>, <p class="attribute"><strong>Duration:</strong> 0:00:00</p>, <p class="attribute"><strong>Status:</strong> Pass 2 Failure 1 Error 1</p>]qq交流群:226296743 Pass 2 Failure 1 Error 1
寫個判斷函數
1.對結果判斷,寫個判斷是否有失敗用例的函數
# coding:utf-8from bs4 import BeautifulSoupimport sysreload(sys)sys.setdefaultencoding(‘utf8‘)def is_result_pass(): try: with open("result.html", "r") as fp: f = fp.read() # 讀報告 soup = BeautifulSoup(f, "html.parser") status = soup.find_all(class_="attribute") result = status[2].contents[-1] # 擷取報告結果 if "Failure" in result or "Error" in result: print("測試過程有不通過用例:%s"%result) return False else: return True except Exception as msg: print("判斷過程出現異常:%s"%str(msg)) return Falseif __name__ == "__main__": print("qq交流群:226296743") res = is_result_pass() print(res)
運行結果:
測試過程有不通過用例: Pass 2 Failure 1 Error 1False
2.在最後發郵件之前加個判斷
if not is_result_pass(): # 判斷html報告是否有報錯 # 執行發送郵件函數,自己寫一個發郵件函數 # send_mail(sender, psw, receiver, smtp_server, report_file) else: print("測試案例全部通過,不發送郵件")
selenium+python自動化89-用例不通過的時候發送郵件