selenium+python自動化89-用例不通過的時候發送郵件
阿新 • • 發佈:2018-01-19
exception 試用 一個 sel send post ttr htm ima
前言
實現需求:當測試用例全部通過的時候,不發郵件,當用例出現Error或Failure的時候發送郵件
解決思路:生成html測試報告後,用bs4解析html頁面,寫個函數判斷頁面上是都有不通過的記錄
html報告
1.查看html報告,主要看Status這一行是否會出現Failure 或 Error 的記錄
bs4解析html
1.bs4模塊在我的博客上上海-悠悠之前有過介紹,就不重復寫了,先定位html頁面元素,先通過它的class屬性:attribute定位到這三行記錄
2.取出最後一行,然後讀出文本內容。
# coding:utf-8 from bs4 import BeautifulSoup # 打開html文件,讀取報告內容 with open("result.html", "r") as fp: f = fp.read() # 讀報告 # 解析html,查找class屬性attribute soup = 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-8 from bs4 import BeautifulSoup import sys reload(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 False if __name__ == "__main__": print("qq交流群:226296743") print(is_result_pass())
運行結果:
測試過程有不通過用例: Pass 2 Failure 1 Error 1
False
2.在最後發郵件之前加個判斷
if not is_result_pass():
# 判斷html報告是否有報錯
# 執行發送郵件函數,自己寫一個發郵件函數
# send_mail(sender, psw, receiver, smtp_server, report_file)
else:
print("測試用例全部通過,不發送郵件")
selenium+python自動化89-用例不通過的時候發送郵件