Airtest3行代碼幫你輕鬆實現“自動發送測試報告”到指定郵箱

前言

大多數情況下,跑完用例腳本之後,我們需要把測試報告打包,之後再發送給不同的同事查看。其實,python有很多好用的庫和模塊,可以幫助我們實現這個需求,解放我們的雙手。

所以今天的推文,我們主要來看一看如何 自動把導出的測試報告打包成zip壓縮包之後,再發送到指定的郵箱 。


1.在IDE中設置本地python環境


因爲在實現壓縮文件和發送郵件的腳本中,我們會用到python的一些第三方庫和模塊,所以我們在IDE中需要先設置好本地的python環境,方便我們後續做一些安裝第三方庫的工作。

設置的方法也很簡單,在IDE的頂部菜單欄中,找到 選項--設置--自定義python.exe的路徑 ,選擇自己本地的python環境即可。

 

 設置好本地python環境之後,可以在命令行中檢查該環境是否已經安裝了 airtest 和 pocoui庫,如未安裝,請使用下述命令把這兩個做自動化測試的框架安裝上:

pip install airtest
pip install pocoui

 

2.用腳本導出運行報告

 

Airtest通過代碼生成報告——simple_report、LogToHtml詳解

Airtest生成報告命令行airtest report詳解
之前推文詳細介紹如何用腳本生成/導出報告,編寫完用例腳本後,我們可以使用 LogToHtml 類導出我們的測試報告,方便發送給其他同事查看:

from airtest.report.report import LogToHtml

h1 = LogToHtml(script_root=r'D:\test\nolog_test.air', log_root=r"D:\test\nolog_test.air\log", export_dir=r"D:\test\report02" ,logfile=r'D:\test\nolog_test.air\log\log.txt', lang='zh', plugins=None)

h1.report()

注意不要忘記在腳本的開頭導入 LogToHtml 類。各參數的詳細含義我們也可以查看上週的推文,裏面有詳細的介紹。

3.將導出的報告文件壓縮成zip包


在指定目錄中導出的報告包含非常多的文件,比如腳本、圖片、靜態資源文件、log文件和html報告等等:

 

而這些文件最終都將以郵件附件的形式發送出去,如果不對這個導出的報告進行壓縮操作,我們將需要填寫非常多的附件,爲了簡化操作,在導出報告之後,我們可以用 zipfile 模塊將導出的報告壓縮成1個zip包,這樣我們只需要發送1個壓縮包附件即可。

zipfile 是python的一個內置模塊,專門用於壓縮文件和解壓文件。這裏我們僅需要用到模塊裏面壓縮文件的內容。

 

示例代碼幫助我們在Airtest報告的相同路徑下壓縮出來了1個zip文檔。其中, ZipFile() 用於創建1個 zip 文件對象,示例中的三個參數分別表示:

  • filename:壓縮成的zip包的路徑(含壓縮包名稱);例如:xxx.zip
  • mode:可選 r,w,a ,代表不同的打開文件的方式;r只讀;w重寫;a添加
  • compression:指出這個 zipfile 的壓縮方法,默認是 ZIP_STORED ,另一種是 ZIP_DEFLATED
ZipFile.write() 用於將指定文件添加到zip文檔中,示例中的兩個參數分別表示:
  • filename:需要壓縮的文件名
  • arcname:添加到zip文檔之後保存的名稱
擴展閱讀:Python中zipfile壓縮包模塊的使用

 

4.將壓縮好的報告自動發送到指定郵箱

 

最後1步,將壓縮好的報告以附件的形式發送到指定郵箱。我們先來了解下python對於發送郵件這件事的一些相關知識:

SMTP是發送郵件的協議 。Python內置對SMTP的支持,可以發送純文本郵件、HTML郵件以及帶附件的郵件。

Python對SMTP支持有 smtplib 和 email 兩個模塊,email 負責構造郵件,smtplib 負責發送郵件。

但在實際編寫腳本的過程中,小編髮現這兩個模塊的使用起來比較繁瑣,容易出錯。經過一頓搜索之後,找到了 yagmail 庫,可以用來替代上述兩個模塊自動發送郵件的功能。

並且使用這個庫的話,我們 只需要3行代碼就能夠簡單地實現自動發送郵件的功能 :

 

實現的效果如下:

 

另外需要注意的是,使用該庫之前,需要先在IDE指定的本地python環境中使用 pip install yagmail 安裝好這個庫。

還有一點也需要注意下,yagmail.SMTP() 裏面的 password 並不是指發送郵箱的密碼,而是 發送郵箱的授權碼 ,獲取授權碼的方式同學們可以自行到某度上面搜索,不同郵箱獲取授權碼的方式有略微的不同,同學們需要針對自己使用的郵箱去進行搜索。

擴展閱讀:python發送郵件(單發/羣發)——yagmail模塊


小結

學會了如何使用python幫助我們自動發送郵件之後,我們還可以利用這個腳本自動幫我們發送別的東西,比如腳本文件等等。

 

轉自公衆號:AirtestProject 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章