专栏首页北京宏哥《一头扎进》系列之Python+Selenium框架实战篇8 - 年底升职加薪,年终奖就差最后这一步你知道不???

《一头扎进》系列之Python+Selenium框架实战篇8 - 年底升职加薪,年终奖就差最后这一步你知道不???

1.简介

  到上一篇为止,测试报告已经完美的生成,但是你此时不要沾沾自喜,因为还差点意思,你才能升职加薪、拿年终奖。差点啥了???听宏哥给你慢慢道来。那就是把你生成的高端大气上档次的测试报告给领导展示一番,吹嘘一番。不把测试报告发出去好好地在领导面前表现一番,你留着生娃过年吗?这马上就新年了,你还真的留着它生娃啊???辛苦了这么久升职加薪,拿年终奖就靠这一把了。今天这篇文章宏哥就给小伙伴和童鞋们来答疑解惑了,当然了方式方法多种多样的,你可以通过邮件、QQ、微信将测试报告附件手动写邮件发送给相关负责人。这里宏哥讲解如何将测试报告自动发送给相关的负责人。

2. 框架结构

  先一睹为快,看看宏哥把邮件模块放在那里了,宏哥认为这个也是固定的只要封装好,在需要用到的地方进行导入和调用就可以了。因为宏哥将它放在了framework文件夹下,如下图所示:

3. 邮件模块封装

  上边都说了,我们需要封装,因此这里给小伙伴或童鞋们分享一下邮件模块的封装,封装将最新的测试报告发送给测试负责人或者是领导,让他们看看你的成果,这个是你升职加薪,年终奖的砝码。相关代码如下:

3.1 代码实现:

3.2 参考代码:

# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-12-26
@author: 北京-宏哥   QQ交流群:705269076
Project: 《一头扎进》系列之Python+Selenium自动化测试框架实战篇8 - 年底了还没升职加薪,年终奖全靠它了!!!
'''
# 3.导入模块

import os, sys
import smtplib
import time
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

#reportPath = os.path.join(os.getcwd(), 'test_report')  # 测试报告的路径
reportPath = os.path.dirname(os.path.abspath('.')) + '/test_report/'
# reportPath = "E:\\untitled\\automation_framework_demo\\test_report"  # 测试报告的路径

print("打印路径:")

print(reportPath)


class SendMail(object):

    def get_report(self):  # 该函数的作用是为了在测试报告的路径下找到最新的测试报告

        dirs = os.listdir(reportPath)
        dirs.sort()
        newreportname = dirs[-1]
        print('The new report name: {0}'.format(newreportname))
        return newreportname  # 返回的是测试报告的名字

    def take_messages(self):  # 该函数的目的是为了 准备发送邮件的的消息内容
        newreport = self.get_report()
        self.msg = MIMEMultipart()
        self.msg['Subject'] = 'BBA JIT自动化测试报告'  # 邮件的标题
        self.msg['date'] = time.strftime('%a, %d %b %Y %H:%M:%S %z')

        with open(os.path.join(reportPath, newreport), 'rb') as f:
            mailbody = f.read()  # 读取测试报告的内容
        html = MIMEText(mailbody, _subtype='html', _charset='utf-8')  # 将测试报告的内容放在 邮件的正文当中
        self.msg.attach(html)  # 将html附加在msg里

        # html附件    下面是将测试报告放在附件中发送
        att1 = MIMEText(mailbody, 'base64', 'utf-8')
        att1["Content-Type"] = 'application/octet-stream'

        att1["Content-Disposition"] = 'attachment; filename="TestReport.html"'  # 这里的filename可以任意写,写什么名字,附件的名字就是什么
        self.msg.attach(att1)

    def send(self):

       # recipients = ['xxxx@xxxx.com', 'xxxx@qq.com', 'xxx@xxxxx.com']  # 发送给多个人
        recipients = ['hgxxx@nnnx.cn'] #发送给一个人
        self.take_messages()
        self.msg['from'] = 'hg@xxx.cn'  # 发送邮件的人,这种是公司邮箱转发
        #self.msg['to'] = recipients  # 收件人和发送人必须这里定义一下,执行才不会报错。
        toaddrs = recipients

        smtp = smtplib.SMTP()
        smtp.connect('smtp.mxhichina.com')
        smtp.ehlo()
        smtp.login('hg@xxx.cn', '*******xxxx')
        smtp.sendmail(self.msg['from'], toaddrs, self.msg.as_string())  # 发送邮件
        smtp.close()
        print('sendmail success')


if __name__ == '__main__':
    sendMail = SendMail()
    sendMail.send()

3.3 运行结果:

运行代码后,控制台打印如下图的结果

3.4 验证是否是最新测试报告

从3.3中控制台运行结果宏哥打印的结果看出最新的测试报告是:

The new report name: 2019-12-25-11_03_42HTMLtemplate.html

我们去存储测试报告文件的test_report文件夹看一下是不是这个:是不是最新的测试报告

综上所述:从控制台打印结果和测试报告文件夹的测试报告文件比较,我们可以清楚地看出二者一致,证明达到了预期的结果。

4. 查看收件箱

4.1 查看收件箱

在邮件的收件箱中查看到,我们刚刚发送的邮件如下图所示:

4.2 查看邮件内容

点击查看邮件内容如下图所示:

4.3 查看邮件附件

用浏览器打开附件预览查看如下图所示:

5. 小结

Q:最后说明一下,有的小伙伴或者童鞋们私下会问,那个测试报告能不能在邮件里像在浏览器里一样可以点击? A:不可以的生成的文件是HTML文件,邮件客户端解析不了,可以通过附件用浏览器打开查看,可以发一个最新测试报告ur地址,点击在浏览器上访问查看测试报告

  好了,今天的分享就到这里吧!!!谢谢各位的耐心阅读。

您的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python接口自动化(二十九)--html测试报告通过邮件发出去——上(详解)

      前边几篇,已经教小伙伴们掌握了如何生成HTML的测试报告,那么生成测试报告,我们也不能放在那里不管了,这样即使你报告在漂亮,领导也看不到。因此如果想向领导汇...

    北京-宏哥
  • python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)

      大多数的初学者在使用 unittest 框架时候,不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行。虽然...

    北京-宏哥
  • Jmeter(四) - 从入门到精通 - 创建网络测试计划(详解教程)

    在本节中,您将学习如何创建基本的 测试计划来测试网站。您将创建五个用户,这些用户将请求发送到JMeter网站上的两个页面。另外,您将告诉用户两次运行测试。因此,...

    北京-宏哥
  • python接口自动化(二十九)--html测试报告通过邮件发出去——上(详解)

      前边几篇,已经教小伙伴们掌握了如何生成HTML的测试报告,那么生成测试报告,我们也不能放在那里不管了,这样即使你报告在漂亮,领导也看不到。因此如果想向领导汇...

    北京-宏哥
  • 同时管理多个项目的心得:理清思路

    回想起2006年的时候我手上最多的时候有11个项目在同时进行,同时我还要负责几个系统的用户支持工作,还要管理一个小团队的日常工作。那段时间真是有些超负荷运作,忙...

    公众号php_pachong
  • 【程序猿硬核科普】学习使用Markdown语法写博客

    Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,在 2004 由约翰·格鲁伯(英语:John Gruber)创建。Markd...

    浩Coding
  • 电子邮件系统原理以及相关协议

    一个简单的邮件系统,应该包含三部分:首先是邮件服务器、用户代理、邮件传送协议。 邮件服务器:平时我们使用qq邮箱,新浪邮箱,网易邮箱,gmail等都是邮件服务器...

    苦咖啡
  • 一封伪造邮件引发的“探索”(涉及钓鱼邮件、SPF和DKIM等)

    0x00. 引言 我用swaks 发送一封以我们公司CTO为显示发件人(腾讯企业邮箱)的伪造邮件给我的一个同事,邮件的内容就是让这位同事去CTO的办公司一趟,没...

    FB客服
  • 2019-2020内容产业趋势报告:七个黄金拐点=七个机会

    生产模式变革(已完成); 分发模式变革(进行中)。 Next……? 随着自媒体生态的出现,和人工智能对内容分发的改造,这场覆盖内容产业端到端的革新,终于迎来...

    腾讯大讲堂
  • 发送邮件那些事

    世界的第一封电子邮件 1969年10月世界上的第一封电子邮件是由计算机科学家Leonard K.教授发给他的同事的一条简短消息。 据《互联网周刊》报道世界上的第...

    纯洁的微笑

扫码关注云+社区

领取腾讯云代金券