selenium+python自動化88-用例不通過的時候發送郵件
阿新 • • 發佈:2018-05-12
clas 郵件 failure info imp .cn 通過 duration all
前言
實現需求:當測試用例全部通過的時候,不發郵件,當用例出現Error或Failure的時候發送郵件
解決思路:生成html測試報告後,用bs4解析html頁面,寫個函數判斷頁面上是都有不通過的記錄
一、html報告
1.查看html報告,主要看Status這一行是否會出現Failure 或 Error 的記錄
二、 bs4解析html
1.bs4模塊在我的博客上[上海-悠悠](http://www.cnblogs.com/yoyoketang/tag/beautifulsoup4/)之前有過介紹,就不重復寫了,先定位html頁面元素,先通過它的class屬性:attribute定位到這三行記錄
2.取出最後一行,然後讀出文本內容。
```
1 # coding:utf-8 2 3 from bs4 import BeautifulSoup 4 5 6 7 # 打開html文件,讀取報告內容 8 9 with open("result.html", "r") as fp: 10 11 f = fp.read() # 讀報告 12 13 14 15 # 解析html,查找class屬性attribute 16 17 soup = BeautifulSoup(f, "html.parser") 18 19 status = soup.find_all(class_="attribute") 20 21 22 23 # 打印查找內容 24 25 print(status) 26 27 28 29 print("qq交流群:226296743") 30 31 result = status[2].contents[-1] # 獲取報告結果 32 33 print(result) 34 35 ```
運行結果:
```
[<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>]
Pass 2 Failure 1 Error 1
```
三、 寫個判斷函數
1.對結果判斷,寫個判斷是否有失敗用例的函數
1 ``` 2 3 # coding:utf-8 4 5 from bs4 import BeautifulSoup 6 7 8 9 import sys 10 11 reload(sys) 12 13 sys.setdefaultencoding(‘utf8‘) 14 15 16 17 def is_result_pass(): 18 19 try: 20 21 with open("result.html", "r") as fp: 22 23 f = fp.read() # 讀報告 24 25 soup = BeautifulSoup(f, "html.parser") 26 27 status = soup.find_all(class_="attribute") 28 29 result = status[2].contents[-1] # 獲取報告結果 30 31 if "Failure" in result or "Error" in result: 32 33 print("測試過程有不通過用例:%s"%result) 34 35 return False 36 37 else: 38 39 return True 40 41 except Exception as msg: 42 43 print("判斷過程出現異常:%s"%str(msg)) 44 45 return False 46 47 48 49 if __name__ == "__main__": 50 51 print("qq交流群:226296743") 52 53 print(is_result_pass()) 54 55 ```
運行結果:
```
測試過程有不通過用例: Pass 2 Failure 1 Error 1
False
```
2.在最後發郵件之前加個判斷
```
1 if not is_result_pass(): 2 3 # 判斷html報告是否有報錯 4 5 6 7 # 執行發送郵件函數,自己寫一個發郵件函數 8 9 # send_mail(sender, psw, receiver, smtp_server, report_file) 10 11 12 13 else: 14 15 print("測試用例全部通過,不發送郵件")
selenium+python自動化88-用例不通過的時候發送郵件