1. 程式人生 > 其它 >測試平臺系列(86) 傳送第一封測試報告郵件

測試平臺系列(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方法。

但這邊有個很嚴重的問題,我們只能拿到測試計劃的資訊,沒有拿到測試報告的詳細資料。

這樣報告連對錯都不知道,我們先寫死一個標題和內容。

接著執行測試計劃,最終效果就如同文章開頭咯。於是我趕緊刪掉了這個該死的測試計劃。

所以後面我們還是得好好完善郵件的內容呀,這塊內容工作量比較大,我們可能不會做到完善,能放一個測試結果+測試報告連結可能是我們需要注意的方向。

至於下一節我們來好好美化一下這個測試郵件,敬請期待~