案例:将E:\Python_script\unittest\Test_Baidu生成的最新测试报告发送到指定邮箱。

我们将之前的unittest的报告生成和Python自动发送邮件结合在一起,就可以完成自动发送最新报告到指定邮箱的操作。

代码示例:

runtest_email.py

import unittest
from BSTestRunner import BSTestRunner
import time
import smtplib # 发送邮件模块
from email.mime.text import MIMEText # 定义邮件内容
from email.header import Header # 定义邮件标题
import os def send_mail(latest_report):
f = open(latest_report, 'rb')
mail_content = f.read()
f.close()
smtpserver = 'smtp.163.com'
# 发送邮箱用户名密码
user = 'nancyrm2018@163.com'
password = '输入自己的密码'
# 发送和接收邮箱
sender = 'nancyrm2018@163.com'
receivers = ['nancyrm2018@126.com', '88886666@qq.com']
# 发送邮件主题和内容
subject = "Web Selenium 自动化测试报告"
# HTML邮件正文
msg = MIMEText(mail_content, 'html', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = sender
msg['To'] = ','.join(receivers) smtp = smtplib.SMTP_SSL(smtpserver, 465)
# HELO 向服务器标识用户身份
smtp.helo(smtpserver)
# 服务器返回结果确认
smtp.ehlo(smtpserver)
# 登录邮箱服务器用户名和密码
smtp.login(user, password) print("Send email start...")
smtp.sendmail(sender, receivers, msg.as_string())
smtp.quit()
print("Email send end!") def latest_report(report_dir):
lists = os.listdir(report_dir)
print(lists)
# 按时间顺序对该目录文件夹下面的文件进行排序
lists.sort(key=lambda fn: os.path.getatime(report_dir + "\\" + fn))
print("The latest report is:" + lists[-1]) file = os.path.join(report_dir, lists[-1])
print(file)
return file if __name__ == '__main__':
report_dir = './test_report'
test_dir = './test_case' discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
now = time.strftime("%Y-%m-%d %H_%M_%S")
report_name = report_dir + '/' + now + 'result.html'
with open(report_name, "wb") as f:
runner = BSTestRunner(stream=f, title='测试报告', description='用例执行情况:')
runner.run(discover)
f.close() # h获取最新测试报告
latest_report = latest_report(report_dir)
# 发送邮件报告
send_mail(latest_report)

代码分析:
可以将代码分为3个部分来理解:

  1. 通过unittest框架的discovery()找到匹配测试用例,由HTMLTestRunner 的run()方法执行测试用例并生成最新的测试报告
  2. 调用new_report()函数找到测试报告目录(test_report)下最新生成的测试报告,返回测试报告的路径
  3. 将得到的最新测试报告的完整路径传给send_mail()函数,实现发邮件功能

代码实现:

 

Python+unittest发送测试报告的更多相关文章

  1. python+smtplib 发送测试报告到邮箱

    之前有介绍过怎样快速的搭建一个python测试框架 python+unittest 搭建简易的接口测试框架 这里介绍一下,怎样使用smtplib将测试报告发送到邮箱,这样使用jenkins定时巡检,执 ...

  2. python+unittest 搭建简易的接口测试框架

    主要介绍如何使用python+unittest快速搭建一个接口测试的框架 1.安装python  unittest 2.新建一个python项目ApiTest 在setUp和setDown里设置一些需 ...

  3. 接口自动化-python unittest+requests+HTMLrunner

    从2015年毕业入行软件测试,快满4年了,之前技术分享都在百度贴吧上面,现在正式开始在博客中记录工作技术,努力成长,加油 接口测试的步骤1.组装好该接口需要的参数数据2.使用get或post附带参数数 ...

  4. 3.5 unittest生成测试报告HTMLTestRunner

    3.5 unittest生成测试报告HTMLTestRunner 前言批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的.unittest里面是不 ...

  5. 简单实现接口自动化测试(基于python+unittest)

    简单实现接口自动化测试(基于python+unittest) 简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Pytho ...

  6. Python+selenium之测试报告(1)

    一.下载HTMLTestRunner.py HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展.它生成易于使用的 HTML 测试报告.HTMLTestRunne ...

  7. Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架

    整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport  多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...

  8. Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发接口化框架

    整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLRe ...

  9. Jenkins配置邮件发送测试报告

    前言 在之前的文章(Jenkins自动执行python脚本输出测试报告)中,我们已成功实现利用Jenkins自动执行python脚本,输出并可直接在界面上查看测试报告,这里我们还差最后一步,我们需要将 ...

随机推荐

  1. Ubuntu安装LAMP

    1.安装apache2 sudo apt-get install apache2 sudo apt-get install apache2 Apache安装成功后,/var/www/默认作为web的根 ...

  2. 我的NopCommerce之旅(1): 系统综述

    一.概述 NopCommerce是一个开源的购物网站,它的特点是Pluggable modular/layered architecture(可插拔模块分层架构) 二.功能特色介绍 1.适配手机端 2 ...

  3. CF1023D Array Restoration

    思路: 使用set即可,细节很多,容易出错. 实现: #include <bits/stdc++.h> using namespace std; const int INF = 0x3f3 ...

  4. 面向对象-类-成员变量-局部变量-this

    1.能够理解面向对象的思想     面向对象是基于面向过程的编程思想,强调的是对象,由对象去调用功能.它是一种更符合人类习惯的编程思想,可以将复杂的事情简单化,将我们的角色从执行者变成了指挥者. 2. ...

  5. DVWA之Brute Force教程

    ---恢复内容开始--- Brute Force暴力破解模块,是指黑客密码字典,使用穷举的方法猜出用户的口令,是一种广泛的攻击手法. LOW low级别的漏洞利用过程 1.使用burp suite工具 ...

  6. moment算本月开始日期和结束日期

    moment算本月开始日期和结束日期 1.引入moment.js var vStartDate=new moment().add('month',addMonth).format("YYYY ...

  7. MFC技术积累——基于MFC对话框类的那些事儿

    1. 创建对话框类 (1)打开VC++6.0环境,点击:文件→新建: (2)在弹出的新建对话框中选择:工程→MFC AppWizard (exe)→输入工程名称(例如:功能调试)→工程保存路径名→确定 ...

  8. mac ssd开启trim模式

    开启方法 sudo trimforce enable

  9. idea Please specify commit message

    在idea中使用github来进行版本控制的时候, 当点击提交的时候遇到了这个问题 错误: Please specify commit message 解决方法: 在commit message中填写 ...

  10. python基础面试题整理---从零开始 每天十题(03)

    一.Q:用Python输出一个Fibonacci数列?(斐波那契额数列) A:我们先来看下代码 #!/usr/bin/env python # -*- coding: utf-8 -*- def fi ...