測試平臺系列(86) 傳送第一封測試報告郵件
大家好~我是
米洛
!
我正在從0到1打造一個開源的介面測試平臺, 也在編寫一套與之對應的教程
,希望大家多多支援。
歡迎關注我的公眾號米洛的測開日記
,獲取最新文章教程!
回顧
上一節我們利用redis,做了一個快取器
。但其實它是存在一定的問題的,接著我會講。
下面我們就實現一發最簡單的郵件通知功能。
結果展示
申請郵箱
我的郵箱很寶貴,大家別用。可以申請126或者163的郵箱,然後開啟POP3/SMTP協議即可。
一般在郵箱->設定裡面,看到POP3/SMTP點進去會有指引。
因為直接用密碼是不可以的。
編寫Notification通知類
這個通知類其實是個虛假的類,也是個抽象類
。因為通知的方式有很多種,包括郵件、簡訊、釘釘、企業微信、飛書等等。所以我們就給他一個空殼,而到具體的郵件啥的時候再實現具體的方法
統一接受subject(主題/標題),content(內容),attachment(附件,郵件用的多),接收人。
編寫通過userId批量獲取郵箱的方法
由於我們在測試計劃的receiver欄位裡面儲存的都是使用者id
,所以我們需要來次轉換:
有沒有發現一個問題,當這個user不固定(測試計劃的接收人肯定不會一直固定),如果我們給他套上cache的方法,也就是要給他一個死key,那麼其他測試計劃執行
的時候,就會取到死key的資料,這就不合理了!!!
所以我們之前編寫的cache針對固定引數的好使,這種可變引數(引數變了,結果也變了)的就不好使了,因為你的key要跟著它走。
這就是我上面說到的缺點
編寫Email類
import yagmail from app.core.configuration import SystemConfiguration from app.core.msg.notification import Notification class Email(Notification): @staticmethod def get_mail_client(): configuration = SystemConfiguration.get_config() data = configuration.get("email") return yagmail.SMTP(user=data.get("sender"), password=data.get("password"), host=data.get("host")) @staticmethod def send_msg(subject, content, attachment=None, *receiver): client = Email.get_mail_client() client.send(receiver, subject=subject, contents=content, attachments=attachment)
先從配置裡面拿到資料,接著呼叫yagmail
庫,獲取mail客戶端,最後根據傳入的主題、郵件內容等資訊傳送郵件。
補全測試計劃通知部分
先獲取訊息型別,如果有郵件型別,我們就獲取使用者郵箱。然後呼叫send_msg方法。
但這邊有個很嚴重的問題,我們只能拿到測試計劃
的資訊,沒有拿到測試報告的詳細資料。
這樣報告連對錯都不知道,我們先寫死一個標題
和內容。
接著執行測試計劃,最終效果就如同文章開頭咯。於是我趕緊刪掉了這個該死的測試計劃。
所以後面我們還是得好好完善郵件的內容呀
,這塊內容工作量比較大,我們可能不會做到完善,能放一個測試結果+測試報告連結可能是我們需要注意的方向。
至於下一節我們來好好美化一下這個測試郵件
,敬請期待~