zoukankan      html  css  js  c++  java
  • 测试平台系列(86) 发送第一封测试报告邮件

    大家好~我是米洛

    我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的教程,希望大家多多支持。

    欢迎关注我的公众号米洛的测开日记,获取最新文章教程!

    回顾

    上一节我们利用redis,做了一个缓存器。但其实它是存在一定的问题的,接着我会讲。

    下面我们就实现一发最简单的邮件通知功能。

    结果展示

    哭了,为了看到效果,我居然自己轰炸自己

    申请邮箱

    我的邮箱很宝贵,大家别用。可以申请126或者163的邮箱,然后开启POP3/SMTP协议即可。

    一般在邮箱->设置里面,看到POP3/SMTP点进去会有指引。

    因为直接用密码是不可以的

    编写Notification通知类

    这个通知类其实是个虚假的类,也是个抽象类。因为通知的方式有很多种,包括邮件、短信、钉钉、企业微信、飞书等等。所以我们就给他一个空壳,而到具体的邮件啥的时候再实现具体的方法

    它长这样

    统一接受subject(主题/标题),content(内容),attachment(附件,邮件用的多),接收人。

    编写通过userId批量获取邮箱的方法

    由于我们在测试计划的receiver字段里面存储的都是用户id,所以我们需要来次转换:

    所以我们在UserDao新增这样一个方法

    有没有发现一个问题,当这个user不固定(测试计划的接收人肯定不会一直固定),如果我们给他套上cache的方法,也就是要给他一个死key,那么其他测试计划执行的时候,就会取到死key的数据,这就不合理了!!!

    所以我们之前编写的cache针对固定参数的好使,这种可变参数(参数变了,结果也变了)的就不好使了,因为你的key要跟着它走。

    这就是我上面说到的缺点

    编写Email类

    import yagmail
    
    from app.core.configuration import SystemConfiguration
    from app.core.msg.notification import Notification
    
    
    class Email(Notification):
    
        @staticmethod
        def get_mail_client():
            configuration = SystemConfiguration.get_config()
            data = configuration.get("email")
            return yagmail.SMTP(user=data.get("sender"), password=data.get("password"), host=data.get("host"))
    
        @staticmethod
        def send_msg(subject, content, attachment=None, *receiver):
            client = Email.get_mail_client()
            client.send(receiver, subject=subject, contents=content, attachments=attachment)
    
    

    先从配置里面拿到数据,接着调用yagmail库,获取mail客户端,最后根据传入的主题、邮件内容等信息发送邮件。

    补全测试计划通知部分

    先获取消息类型,如果有邮件类型,我们就获取用户邮箱。然后调用send_msg方法。

    但这边有个很严重的问题,我们只能拿到测试计划的信息,没有拿到测试报告的详细数据。

    这样报告连对错都不知道,我们先写死一个标题和内容。

    接着运行测试计划,最终效果就如同文章开头咯。于是我赶紧删掉了这个该死的测试计划。

    所以后面我们还是得好好完善邮件的内容呀,这块内容工作量比较大,我们可能不会做到完善,能放一个测试结果+测试报告链接可能是我们需要注意的方向。

    至于下一节我们来好好美化一下这个测试邮件,敬请期待~

  • 相关阅读:
    今天面试一些程序员(新,老)手的体会
    UVA 10635 Prince and Princess
    poj 2240 Arbitrage
    poj 2253 Frogger
    poj 2485 Highways
    UVA 11258 String Partition
    UVA 11151 Longest Palindrome
    poj 1125 Stockbroker Grapevine
    poj 1789 Truck History
    poj 3259 Wormholes
  • 原文地址:https://www.cnblogs.com/we8fans/p/15767501.html
Copyright © 2011-2022 走看看