zoukankan      html  css  js  c++  java
  • unittest发送测试报告邮件

    About

    有了测试报告就可以发送邮件了。

    Python发邮件功能借助smtplibemail模块。

    更多关于发邮件的故事点击:https://www.cnblogs.com/sundawei7/p/11948961.html

    代码示例

    import unittest
    import smtplib
    import HTMLTestRunner
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from email.header import Header
    
    
    class TestStringMethods(unittest.TestCase):
    
        def test_upper(self):
            """判断 foo.upper() 是否等于 FOO"""
            self.assertEqual('foo'.upper(), 'FOO')
    
        def test_isupper(self):
            """ 判断 Foo 是否为大写形式 """
            self.assertTrue('Foo'.isupper())
    
    
    def get_case_result():
        """ 获取测试用例报告 """
        suite = unittest.makeSuite(TestStringMethods)
        file_path = r'M:	ests
    esult.html'
        with open(file_path, 'wb') as f:
            HTMLTestRunner.HTMLTestRunner(
                stream=f,
                title='HTMLTestRunner版本关于upper的测试报告',
                description='判断upper的测试用例执行情况').run(suite)
        f1 = open(file_path, 'r', encoding='utf-8')
        res = f1.read()
        f1.close()
        return res
    
    
    def send_email():
        """ 发送邮件 """
    
        # 第三方 SMTP 服务
        mail_host = "smtp.qq.com"  # 设置服务器
        mail_user = "1206180814@qq.com"  # 用户名
        mail_pass = "bcemjkbexvwhggea"  # 口令
    
        # 设置收件人和发件人
        sender = '1206180814@qq.com'
        receivers = ['1206180814@qq.com', 'tingyuweilou@163.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
    
        # 创建一个带附件的实例对象
        message = MIMEMultipart()
    
        # 邮件主题、收件人、发件人
        subject = '请查阅--测试报告'  # 邮件主题
        message['Subject'] = Header(subject, 'utf-8')
        message['From'] = Header("{}".format(sender), 'utf-8')  # 发件人
        message['To'] = Header("{}".format(';'.join(receivers)), 'utf-8')  # 收件人
    
        # 邮件正文内容 html 形式邮件
        send_content = get_case_result()  # 获取测试报告
        html = MIMEText(_text=send_content, _subtype='html', _charset='utf-8')  # 第一个参数为邮件内容
    
        # 构造附件
        att = MIMEText(_text=send_content, _subtype='base64', _charset='utf-8')
        att["Content-Type"] = 'application/octet-stream'
        file_name = 'result.html'
        att["Content-Disposition"] = 'attachment; filename="{}"'.format(file_name)  # # filename 为邮件附件中显示什么名字
        message.attach(html)
        message.attach(att)
    
        try:
            smtp_obj = smtplib.SMTP()
            smtp_obj.connect(mail_host, 25)  # 25 为 SMTP 端口号
            smtp_obj.login(mail_user, mail_pass)
            smtp_obj.sendmail(sender, receivers, message.as_string())
            smtp_obj.quit()
            print("邮件发送成功")
    
        except smtplib.SMTPException:
            print("Error: 无法发送邮件")
    
    
    if __name__ == '__main__':
        send_email()
    View Code

    发送效果如下图:

    正如上面两张图片所示,在使用HTMLTestRunner模板发送测试报告的时候,QQ邮箱和163邮箱或多或少的会存在一些渲染问题。的html内容无法加载CSS样式,但附件没问题。
    这说明各家对于邮箱服务器的设置不一样。不要在意这些细节,只要附件没有问题就ok啦。

  • 相关阅读:
    WPF之感触
    C# WinForm 给DataTable中指定位置添加列
    MyEclipse 8.6 download 官方下载地址
    将博客搬至CSDN
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
    Building Microservices with Spring Cloud
  • 原文地址:https://www.cnblogs.com/sundawei7/p/11947631.html
Copyright © 2011-2022 走看看