ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Unittest单元测试框架——BeautifulReport测试报告和Yagmail自动发送邮件

2021-05-06 08:32:39  阅读:172  来源: 互联网

标签:qq 测试报告 Unittest 单元测试 发送 report com 邮件


一、前言

之前在做appium自动化的时候,已经提到过unittest框架的基本概念、用例执行,以及BeautifulReport测试报告的简单使用了(地址:https://www.cnblogs.com/Chilam007/p/12857102.html--强烈建议先看此文章哈,不然下面直接贴的代码估计会有点懵),这里就不再赘述了,本文主要讲下yagmail发送邮件功能,当前前面已经讲了po模式,所以是直接基于po模式的代码框架讲的,包括后面的功能演练也都是基于po模式。

二、Yagmail发送邮件

yagmail是python的一个第三方库,yagmail库极大地简化了发送邮件的代码,通过pip命令安装(pip install yagmail),发送邮件示例

import yagmail

# 连接邮箱服务器
yag = yagmail.SMTP(user="123@qq.com",password="12345",host='smtp.qq.com')

# 邮件正文
contents = ["这是测试邮件发送功能的邮件"]

# 发送邮件:如果想给多个用户发,只需要把收件人放在一个list中即可;如果想发送带附件的邮件,只需要指定本地附件的路径即可,也可以通过list指定多个附件
yag.send(['1234@qq.com','455@qq.com'],'subject',contents,["E://report.html"])

说明,邮件发送需要准备以下几个内容:

发送人的账号(如xxxxxxxx@qq.com)、授权码(如yyyyyyyyyy),服务器host(如qq邮箱的smtp.qq.com)
收件人账号
邮件标题(可不要)
邮件内容(可不要)
邮件附件(可不要,提供附件的路径即可)
注:

1. 发送人的授权码如何获取?以QQ邮件为例(其他邮箱类似)

【qq邮箱——设置——账户——POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务——IMAP/SMTP服务——开启】

2. 公共邮箱:添加端口号与smtp的属性即可(详细请百度解决)

三、自动发送邮件功能集成自动化测试

上面说明了如何发送邮件,现在演练下如何将自动化测试生成的报告发送邮件,因为是基于前面讲的po模式代码框架,所以这里只讲执行文件。

整个程序的执行过程可以分为两部分:

1、定义测试报告文件,并赋值给变量html_report,通过BeautifulReport.report运行测试用例

2、调用send_mail()函数,并传入html_report文件,在send_mail函数中,将测试报告作为邮件的附件发送到指定邮件

项目目录

 

excute_cases.py

import unittest
from BeautifulReport import BeautifulReport
import datetime
import yagmail

# 把测试报告作为附件发送到指定邮箱
def send_mail(report):
    yag = yagmail.SMTP(user="31696@qq.com", password="fuhhddjj", host='smtp.qq.com')
    subject = "自动化测试报告"
    contents = "自动化用例已执行完毕,详细报告请查看附件"
    yag.send('13789@163.com',subject,contents,report)
    print("邮件已经发送成功!")

if __name__ == '__main__':
    # 加载测试用例:指定E:\\08PyCharmProject\\Case1\\test_case目录,“test*.py”匹配指定目录下所有test开头的.py文件
    test_suite = unittest.defaultTestLoader.discover('E:\\UI test\\UnittestProject\\TestCases', pattern='test*.py')
    # 获取当前时间,用于命名测试报告标题
    now = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S')
    # 将用例加到对象中
    result = BeautifulReport(test_suite)
    # report方法实现了用例的执行、用例执行结束的结果统计、生成测试报告等操作
    # :filename -> 测试报告名称, 如果不指定默认文件名为report.html,description -> 测试报告用例名称展示,report_dir-> 报告文件写入路径
    result.report(filename='测试报告'+str(now), description='自动化测试', report_dir='E:\\UI test\\UnittestProject\\Report')
    html_report = './Report/测试报告'+str(now)+'.html' # 这个要注意要带目录路径,如果直接附文件名,程序会找不到路径
    send_mail(html_report)

 

标签:qq,测试报告,Unittest,单元测试,发送,report,com,邮件
来源: https://www.cnblogs.com/Chilam007/p/14733700.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有