1. 程式人生 > >selenium+python自動化88-用例不通過的時候發送郵件

selenium+python自動化88-用例不通過的時候發送郵件

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-用例不通過的時候發送郵件