天天看點

Unittest單元測試架構和zmail發送郵件搭配使用,超爽的!誰用誰知道

python發送郵件子產品–zmail

前言

  • 每次學習新子產品的的時候需要思考以下兩個問題

    1.為什麼選擇zmail?

    2.zmail能解決工作中什麼樣的問題?

安裝zamil子產品

pip install zamil

zmail有哪些優點?

  • 自動查找伺服器自位址及其端口
  • 自動使用合适的協定登入
  • 自動将python字典轉換為MIME對象(帶附件)
  • 自動添加郵件标題和本地名稱,以避免伺服器拒絕您的郵件
  • 輕松自定義郵件标題
  • 支援HTML作為郵件内容
  • 隻需要python> = 3.5,您可以将其嵌入到項目中而無需其他子產品

演式發送郵件

  1. 檔案夾建1個HTML檔案
  2. 郵件發送HTML檔案
  3. 演式發送郵件效果
    Unittest單元測試架構和zmail發送郵件搭配使用,超爽的!誰用誰知道

實戰演練

  • 測試用例
    Unittest單元測試架構和zmail發送郵件搭配使用,超爽的!誰用誰知道
生成HTML測試報告
#!/usr/bin/python3

# @Time    : 2020/7/31 10:55
# @Author  : 騎着烏龜找豬

import unittest
import HTMLTestRunner


# 用例目錄位址
test_dir = "./"

def case():
    #  加載測試所有用例
    discover = unittest.defaultTestLoader.discover(test_dir,
                                                   pattern="test*py",
                                                   )
    return discover

if __name__ == '__main__':
    # 測試報告存放目錄
    report_path = "D:/report/result.html"
    # 以二制定方式寫入檔案
    file = open(report_path, 'wb')
    # 定義測試報告
    runner = HTMLTestRunner.HTMLTestRunner(stream=file,
                                           title="測試報告",
                                           description="用列執行結果")
    # 執行用例生成報告
    runner.run(case())      

運作結果:

郵件子產品代碼
#!/usr/bin/python3

# @Time    : 2020/7/31 8:28
# @Author  : 騎着烏龜找豬

import zmail

def s_mail()
    report_path = "D:/report/result.html"

    MAIL = {
        'subject': '郵件主題',  
        'content_text': '測試發送郵件',
        'attachments': report_path, 
    }
    server = zmail.server("發送郵件人", "QQ郵件的授權碼,不是密碼")
    # 如果有多個收件人,則用清單
    server.send_mail("[email protected]", MAIL)      

備注:重點郵箱使用的是QQ授權碼,不是QQ密碼

完整代碼

#!/usr/bin/python3

# @Time    : 2020/7/31 10:55
# @Author  : 騎着烏龜找豬

import unittest
import HTMLTestRunner
# 導入發送郵件子產品
from Mail.zmail import s_mail

# 用例
test_dir = "./"

def case():
    #  加載用例
    discover = unittest.defaultTestLoader.discover(test_dir,
                                                   pattern="test*py",
                                                   )
    return discover

if __name__ == '__main__':
    # 報告生成目錄
    report_path = "D:/report/result.html"
    # 測試結果寫入到報告裡
    file = open(report_path, 'wb')
    runner = HTMLTestRunner.HTMLTestRunner(stream=file,
                                           title="測試報告",
                                           description="用列執行結果")
    # 執行用例生成報告
    runner.run(case())
    # 一定是要先關閉檔案再執行下方的發送郵件,否則發送後的附件會為空
    file.close()
    s_mail()      

如果對軟體測試、接口測試、自動化測試、持續內建、面試經驗。感興趣可以進到893694563,群内會有不定期的分享測試資料。還會有技術大牛,業内同行一起交流技術