前言
大多數情況下,跑完用例腳本之後,我們需要把測試報告打包,之後再發送給不同的同事查看。其實,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文檔之後保存的名稱
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