• 测试平台系列(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方法。

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

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

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

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

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

  • 相关阅读:
    通过静态广播监听网络变化,在通过回调通知
    支付宝九宫格
    toolBar
    QQ发送位置(高德地图)
    聊天消息 左右item
    Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
    判断软键盘是否弹出 并且隐藏
    Solve Longest Path Problem in linear time
    Why longest path problem doesn't have optimal substructure?
    [leetcode] Reorder List
  • 原文地址:https://www.cnblogs.com/we8fans/p/15767501.html
Copyright © 2020-2023  润新知