接口测试 — 7.接口自动化测试发送邮件

如果要完整实现自动化测试,需要把项目测试的结果数据等,通过发送电子邮件的方式,通知需要看到测试报告的用户。

1、设置邮箱授权码

想要使用代码发送邮件,首先要对邮箱进行设置:即设置邮箱授权码。

(1)设置163邮箱

第一次设置授权码:登录163邮箱 —> 设置 —> POP3/SMTP/IMAP —> 设置授权码。

第n次设置授权码: 登录163邮箱 —> 设置 —> POP3/SMTP/IMAP —> 在界面左侧栏中有客户端授权码选项 —> 重置授权码。

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386   

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click

 

(2)设置QQ邮箱发送邮件

  1. 找到QQ邮箱授权码,打开QQ邮箱 —> 设置 —> 账号 —> POP3开启服务 —> 开启

    (如果已经开启了,不知道授权码,就点温馨提示里面的‘生成授权码’)

  2. 发验证短信获取授权码,照着提示发个短信,点我已发送,就会收到授权码了。

  3. 收到授权码后复制,保存下来,这个就可以当QQ邮箱的密码了。

2、安装zmail模块

我们需要适用Python中的zmail模块,来实现邮件的发送。

首先在cmd命令行中,执行如下命令,来安装zmail模块。

pip install zmail或者python -m pip install zmail

提示:在Python中适用zmail模块比使用smtplib库更加方便。

3、实现代码

"""
使用python的zmail模块实现发送邮件
1.安装zmail库
    pip install zmail
    python -m pip install zmail
2.设置邮箱的授权码
3.发邮件
    1.编辑邮件内容
    2.填写发件人邮箱和授权码
    3.发送邮件
"""

import zmail

# 1.准备发送邮件的内容(字典格式)
# 注意subject少用测试或者test,邮箱会自动屏蔽,多了还会拉黑你。
mail_content = {
    "subject": "邮件主题",
    "content_text": "邮件内容,邮件正文",
    "attachments": "../data/add_dep.xls"  # 邮件附件(路径)
}

# 2.使用发送邮件的账户和密码,密码是授权码
server = zmail.server("xxxxxxx@163.com", "xxxxxxx123456")

"""
说明:
关于邮客户端设置的POP3,SMTP,IMAP地址,
zmail模块都帮助我们设置好了
点击zmail.server()方法即可查看,如下:

def server(username: str, password: str,
           smtp_host: Optional[str] = None,
           smtp_port: Optional[int] = None,
           smtp_ssl: Optional[bool] = None,
           smtp_tls: Optional[bool] = None,
           pop_host: Optional[str] = None,
           pop_port: Optional[int] = None,
           pop_ssl: Optional[bool] = None,
           pop_tls: Optional[bool] = None,
           config: Optional[str] = None,
           timeout=60, debug=False, log: Optional[logging.Logger] = None,
           auto_add_from=True, auto_add_to=True) -> MailServer:

"""

# 3.发送邮件
# 参数:收件人,邮件内容
server.send_mail("yyyyyyy@163.com", mail_content)

# 给多人发送邮件
# server.send_mail([收件人1, 收件人2], 邮件内容)

4、发送html格式的邮件

这可以把html格式的测试报告,作为邮件的正文进行发送。

同时也可以把测试报告作为附件一起发送。

# 导入zmail模块
import zmail模块

# 发送HTML作为邮件内容 
# 1.读取html文件  
with open("report.html", "r", encoding="utf-8") as fp:
    content_html = fp.read()
# 2.准备发送邮件的内容(字典格式)
mail_content = {
    "subject": "自动化测试报告",
    "content_html": content_html,
    "attachments": "report.html"
}

# 3.使用发送邮件的账户和密码,密码是授权码
server = zmail.server("xxxxxxx@163.com", "xxxxxxx123456")

# 4.发送邮件
# 参数:收件人,邮件内容
server.send_mail("yyyyyyy@163.com", mail_content)

注意:
zmail.read_html()可以读取html文件,但是read_html()方法读入纯英文的页面没有问题。
读取带有中文的页面,就会报错,因为没有做编码处理。

所以我们会使用open()方法来读取html中的内容。

我们也可以把源码中的read_html()方法修改一下,加上编码即可,如下:

def read_html(html_path: str):
    """Get html content by its path."""
    path = get_abs_path(html_path)

    with open(path, 'r', encoding="utf-8") as f:
        content = f.read()

    return content

修改完之后就可以用下面代码,代替上面的1,2步了。

mail_content = {
    "subject": "自动化测试报告",
    "content_html": zmail.read_html("../report/report.html"),
    "attachments": "report.html"
}

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-20 01:50:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-20 01:50:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-20 01:50:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-20 01:50:02       20 阅读

热门阅读

  1. sql Server 单用户模式切换为正常模式

    2023-12-20 01:50:02       40 阅读
  2. SQL基础:SQL 介绍和数据库基础

    2023-12-20 01:50:02       57 阅读
  3. 虚拟化之成本

    2023-12-20 01:50:02       39 阅读
  4. ORDER BY和ROW_NUMBER() OVER (ORDER BY ...)区别?SQL

    2023-12-20 01:50:02       45 阅读
  5. scala学习四:方法与函数

    2023-12-20 01:50:02       37 阅读
  6. 50道SpringBoot高频题整理(附答案背诵版)

    2023-12-20 01:50:02       39 阅读
  7. Mybatis Plus 多个SQL分布在多个Jar包如何全部加载

    2023-12-20 01:50:02       36 阅读
  8. ArcGIS Pro SDK导出的几何XML和Json

    2023-12-20 01:50:02       31 阅读
  9. vue中判断应该import 哪个js或css

    2023-12-20 01:50:02       38 阅读