天天看點

『居善地』接口測試 — 9、接口自動化架構的發送郵件實作

目錄

  • 1、設定郵箱授權碼
  • 2、安裝zmail子產品
  • 3、實作代碼
  • 4、發送html格式的郵件

如果要完整實作自動化測試,需要把項目測試的結果資料等,通過發送電子郵件的方式,通知需要看到測試報告的使用者。

想要使用代碼發送郵件,首先要對郵箱進行設定:即設定郵箱授權碼。

(1)設定163郵箱

第一次設定授權碼:登入163郵箱 —> 設定 —> POP3/SMTP/IMAP —> 設定授權碼。

第n次設定授權碼: 登入163郵箱 —> 設定 —> POP3/SMTP/IMAP —> 在界面左側欄中有用戶端授權碼選項 —> 重置授權碼。

『居善地』接口測試 — 9、接口自動化架構的發送郵件實作

(2)設定QQ郵箱發送郵件

  1. 找到QQ郵箱授權碼,打開QQ郵箱 —> 設定 —> 賬号 —> POP3開啟服務 —> 開啟
    『居善地』接口測試 — 9、接口自動化架構的發送郵件實作
    (如果已經開啟了,不知道授權碼,就點溫馨提示裡面的‘生成授權碼’)
  2. 發驗證短信擷取授權碼,照着提示發個短信,點我已發送,就會收到授權碼了。
    『居善地』接口測試 — 9、接口自動化架構的發送郵件實作
  3. 收到授權碼後複制,儲存下來,這個就可以當QQ郵箱的密碼了。
    『居善地』接口測試 — 9、接口自動化架構的發送郵件實作

我們需要适用Python中的

zmail

子產品,來實作郵件的發送。

首先在

cmd

指令行中,執行如下指令,來安裝

zmail

子產品。

pip install zmail

或者

python -m pip install zmail

提示:在Python中适用

zmail

子產品比使用

smtplib

庫更加友善。

"""
使用python的zmail子產品實作發送郵件
1.安裝zmail庫
    pip install zmail
    python -m pip install zmail
2.設定郵箱的授權碼
3.發郵件
    1.編輯郵件内容
    2.填寫發件人郵箱和授權碼
    3.發送郵件
"""

import zmail

# 1.準備發送郵件的内容(字典格式)
# 注意subject少用測試或者test,郵箱會自動屏蔽,多了還會拉黑你。
mail_content = {
    "subject": "郵件主題",
    "content_text": "郵件内容,郵件正文",
    "attachments": "../data/add_dep.xls"  # 郵件附件(路徑)
}

# 2.使用發送郵件的賬戶和密碼,密碼是授權碼
server = zmail.server("[email protected]", "xxxxxxx123456")

"""
說明:
關于郵用戶端設定的POP3,SMTP,IMAP位址,
zmail子產品都幫助我們設定好了
點選zmail.server()方法即可檢視,如下:

def server(username: str, password: str,
           smtp_host: Optional[str] = None,
           smtp_port: Optional[int] = None,
           smtp_ssl: Optional[bool] = None,
           smtp_tls: Optional[bool] = None,
           pop_host: Optional[str] = None,
           pop_port: Optional[int] = None,
           pop_ssl: Optional[bool] = None,
           pop_tls: Optional[bool] = None,
           config: Optional[str] = None,
           timeout=60, debug=False, log: Optional[logging.Logger] = None,
           auto_add_from=True, auto_add_to=True) -> MailServer:

"""

# 3.發送郵件
# 參數:收件人,郵件内容
server.send_mail("[email protected]", mail_content)

# 給多人發送郵件
# server.send_mail([收件人1, 收件人2], 郵件内容)

           

這可以把html格式的測試報告,作為郵件的正文進行發送。

同時也可以把測試報告作為附件一起發送。

# 導入zmail子產品
import zmail子產品

# 發送HTML作為郵件内容 
# 1.讀取html檔案  
with open("report.html", "r", encoding="utf-8") as fp:
    content_html = fp.read()
# 2.準備發送郵件的内容(字典格式)
mail_content = {
    "subject": "自動化測試報告",
    "content_html": content_html,
    "attachments": "report.html"
}

# 3.使用發送郵件的賬戶和密碼,密碼是授權碼
server = zmail.server("[email protected]", "xxxxxxx123456")

# 4.發送郵件
# 參數:收件人,郵件内容
server.send_mail("[email protected]", mail_content)


           

注意:

zmail.read_html()

可以讀取html檔案,但是

read_html()

方法讀入純英文的頁面沒有問題。但讀取帶有中文的頁面,就會報錯,因為沒有做編碼處理。

是以我們會使用

open()

方法來讀取html中的内容。

我們也可以把源碼中的

read_html()

方法修改一下,加上編碼即可,如下:

def read_html(html_path: str):
    """Get html content by its path."""
    path = get_abs_path(html_path)

    with open(path, 'r', encoding="utf-8") as f:
        content = f.read()

    return content
           

修改完之後就可以用下面代碼,代替上面的1,2步了。

mail_content = {
    "subject": "自動化測試報告",
    "content_html": zmail.read_html("../report/report.html"),
    "attachments": "report.html"
}