html文件内容通过邮件发送,显示空白?0B?原来是因为....

标题党了一波,最近被自动化测试折磨的,今天又发现了一个坑,但可能是因为我不够严谨导致的,希望这篇文章能给新人一些启发。

事情是这样的:

我想把我生成的测试报告也就是html文件可以通过邮箱发送出去,但是发送好几次都是空白,调试的时候也发现我的html_content:'',代码跳转到html文件中确实为空,但是当我关闭调试后,我查看我的html文件时,所有代码都出现了。然后我就又开始了漫长的搜索之旅。

找到了一篇,不得不说这位兄台的标题写的太简单易懂了,我感觉这就是我想要的答案,但是他在2019年就遇到了这个问题,看来只有我这种半吊子才会出现打开文件不关闭的错误。python之邮件发送附件为什么一直是空的_python邮件自动发送,附件打开没有内容怎么办-CSDN博客

未修改前我的源码是这样的:

suit = unittest.TestSuite()
# 测试套件
suit.addTest(TestSalesOrder("test_SalesOrderDemand_total_equal_zero"))
suit.addTest(TestSalesOrder("test_SalesOrderDemandEqual"))

filename = 'report/login1Report.html'

fp = open(filename, 'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
title=u"测试报告",
)
# 执行用例
runner.run(discover)

send_email = SendEmail(host="smtp.163.com", port=465, user="邮箱@163.com", password="smtp授权码")
send_email.send_html_content(
        from_addr="邮箱@163.com",
        to_addrs="邮箱@163.com",
        subject="自动化测试报告",
        html_content=html_content
    )

然后...就遇到了这种空白邮件,我还尝试把他用附件发送,也出现了0字节的情况

最后看了上面的文章,醍醐灌顶,把代码改成了这样,顺便加了个判断。

    with open(filename, "wb") as fp:
        suit = unittest.TestSuite()
        # 测试套件
        suit.addTest(TestSalesOrder("test_SalesOrderDemand_total_equal_zero"))
        suit.addTest(TestSalesOrder("test_SalesOrderDemandEqual"))

        runner = HTMLTestRunner.HTMLTestRunner(
            # 指定测试报告的文件
            stream=fp,
            # 测试报告的标题
            title=u"测试报告",
            # 测试报告的副标题
            description=u'测试数据'
        )
        # 执行用例
        runner.run(discover)

    time.sleep(5)
    try:
        with open('report/login1Report.html', 'r', encoding='utf-8') as file:
            html_content = file.read()
        # 检查是否读取到内容
        if not html_content:
            print("文件是空的或读取内容失败。")
    except UnicodeDecodeError as e:
        print(f"文件编码错误:{e}")
    except FileNotFoundError:
        print("文件未找到。")
    except Exception as e:
        print(f"读取文件时发生未知错误:{e}")

    send_email = SendEmail(host="smtp.163.com", port=465, user="@163.com", password="授权码")
    send_email.send_html_content(
        from_addr="@163.com",
        to_addrs="@163.com",
        subject="自动化测试报告",
        html_content=html_content
    )

最后终于可以了,但是不能发送css就没想到。也算是成功了一半

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值