自动化测试之自动发送邮件功能

1、用 yagmail 发送邮件

  通过 pip 命令安装

 pip install yagmail

示例:

import yagmail

yag = yagmail.SMTP(user='发送方邮箱',password='授权码', host='smtp.qq.com')

# 邮件正文
contents = ['This is the body, and here is just text http://somedomain/image.png', 'You can find an audio file attached.']

# 发送邮件
yag.send('接收方邮箱', 'subject', contents)

结果:

  给多个用户发送邮件,把收件人放到一个 list 中即可。

# 发送邮件
yag.send(['aa@126.com','bb@qq.com','cc@gmail.com'], 'subject', contents)

  发送带附件的邮件,只需指定本地附件的路径即可。

 

yag.send('接收方邮箱', 'subject', contents, [r"F:\test.txt"])

结果:

2、整合自动发送邮件功能

  整个程序的执行过程如下:

  (1)定义测试报告文件,并赋值给变量 html_report,通过 HTMLTestRunner 运行测试用例,将结果写入文件后关闭。 

  (2)调用 send_mail()函数,并传入 html_report 文件。在 send_mail()函数中,把测试报告作为邮件的附件发送到指定邮箱。

# 导包
import time
import unittest
import yagmail
from HTMLTestRunner import HTMLTestRunner


# 把测试报告作为附件发送到指定邮箱
def send_mail(report):
    yag = yagmail.SMTP(user="发送方邮箱",
                       password="授权码",
                       host='smtp.qq.com')
    subject = "主题,自动化测试报告"
    contents = "正文,请查看附件。"
    yag.send('接收方邮箱', subject, contents, report)
    print('email has send out !')

if __name__ == '__main__':
    # 定义测试用例的目录为当前目录
    test_dir = './test_case'
    suit = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
    # 获取当前日期和时间
    now_time = time.strftime("%Y-%m-%d %H_%M_%S")
    html_report = './test_report/' + now_time + 'result.html'
    fp = open(html_report, 'wb')
    # 调用 HTMLTestRunner,运行测试用例
    runner = HTMLTestRunner(stream=fp,
                            title="百度搜索测试报告",
                            description="运行环境:Windows 10, Chrome 浏览器"
                            )
    runner.run(suit)
    fp.close()
    send_mail(html_report) # 发送报告

 

posted @ 2022-07-03 16:58  MToy  阅读(425)  评论(0)    收藏  举报