python生成自动化测试报告并发送到指定邮箱
#-*-coding:utf-8 -*-
import HTMLTestRunner
import unittest
import time
import sys
import os
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from login import umeiLogin
reload(sys)
sys.setdefaultencoding('utf8') def new_file(test_dir):
#列举test_dir目录下的所有文件,结果以列表形式返回。
lists=os.listdir(test_dir)
#sort按key的关键字进行排序,lambda的入参fn为lists列表的元素,获取文件的最后修改时间
#最后对lists元素,按文件修改时间大小从小到大排序。
lists.sort(key=lambda fn:os.path.getmtime(test_dir+'\\'+fn))
#获取最新文件的绝对路径
file_path=os.path.join(test_dir,lists[-1])
return file_path # 3.定义:发送邮件,发送最新测试报告html
def send_email(newfile):
# 打开文件
f = open(newfile, 'rb')
# 读取文件内容
mail_body = f.read()
# 关闭文件
f.close() # 发送邮箱服务器
smtpserver = 'smtp.163.com'
# 发送邮箱用户名/密码
user = 'XXXX@163.com'
password = 'XXXXX'
# 发送邮箱
sender = 'XXXXX@163.com'
# 多个接收邮箱,单个收件人的话,直接是receiver='XXX@163.com'
receiver = ['XXXXX@163.com']
# 发送邮件主题
subject = '自动化测试报告' msg = MIMEMultipart('mixed') msg_html1 = MIMEText(mail_body, 'html', 'utf-8')
msg.attach(msg_html1) msg_html = MIMEText(mail_body, 'html', 'utf-8')
msg_html["Content-Disposition"] = 'attachment; filename="TestReport.html"'
msg.attach(msg_html) # 要加上msg['From']这句话,否则会报554的错误。
# 要在163设置授权码(即客户端的密码),否则会报535
msg['From'] = 'XXXX@163.com'
# msg['To'] = 'XXX@doov.com.cn'
# 多个收件人
msg['To'] = ";".join(receiver)
msg['Subject'] = Header(subject, 'utf-8') # 连接发送邮件
smtp = smtplib.SMTP()
smtp.connect(smtpserver, 25)
smtp.login(user, password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit() if __name__=="__main__":
print '===== Start ======'
# 1.执行测试用例,生成最新的测试用例
# 指定测试用例为当前文件夹下的test_case目录 test_dir = 'D:\\study\\TestCase'
# 指定测试报告的路径
test_report_dir = 'D:\\study\\report' # 包装测试用例
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(umeiLogin.umeiLogin)) #生成与执行时间相同的测试报告
now = time.strftime('%Y-%m-%d_%H_%M_%S_')
filename = test_report_dir + '\\' + now + 'result.html'
fp = open(filename, 'wb') runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'测试报告', description=u'用例执行情况:')
runner.run(suite)
fp.close() # 2.取最新测试报告
new_report = new_file(test_report_dir) # 3.发送邮件,发送最新测试报告html
send_email(new_report)
print '===== Over ======'
python生成自动化测试报告并发送到指定邮箱的更多相关文章
- Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告1(使用IDLE)
1.说明 自动化测试报告是一个很重要的测试数据,网上看了一下,使用HTMLTestRunner.py生成自动化测试报告使用的比较多,但是呢,小白刚刚入手,不太懂,看了很多博客,终于生成了一个测试报告, ...
- Python&Selenium&pytest借助allure生成自动化测试报告
一.摘要 本篇博文将介绍Python和Selenium进行自动化测试时,如何借助allure生成自动化测试报告 二.环境配置 首先python环境中安装pytest和pytest_allure_ada ...
- Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告2(使用PyCharm )
1.说明 在我前一篇文件(Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告1(使用IDLE ))中简单的写明了,如何生产测试报告,但是使用IDLE很麻烦, ...
- Python&Selenium借助HTMLTestRunner生成自动化测试报告
一.摘要 本篇博文介绍Python和Selenium进行自动化测试时,借助著名的HTMLTestRunner生成自动化测试报告 HTMLTestRunner.py百度很多,版本也很多,自行搜索下载放到 ...
- Python&Selenium借助html-testRunner生成自动化测试报告
一.摘要 本博文将介绍Python和Selenium进行自动化测试时,借助html-testRunner 生成自动化测试报告 安装命令:pip install html-testRunner 二.测试 ...
- 使用cmd查看电脑连接过的wifi密码并将密码发送至指定邮箱(三)
之前,我写了使用cmd查看电脑连接过的wifi密码(二)和使用cmd查看电脑连接过的wifi密码(一)但其中的功能不完善,在本次的更新中新增了更多的功能,其实2018/10/24 就更新完成了,一直拖 ...
- iPhone上将短信内容发送到指定邮箱的方法
iPhone上将短信内容发送到指定邮箱的方法 迄今为止,移动应用安全基本聚焦在以下几个方面,一是移动设备管理BYOD(bring your own device),二是移动恶意软件分析,三是移动设备用 ...
- 屏幕监视专家 v1.0 定时录制屏幕动画发送到指定邮箱
ScreenWatcher v1.0功能:定时录制屏幕动画发送到指定邮箱,录制的动画为gif,可指定录制多长时间.指定几点直接开始录制,完全后台运行.作者:Bluefish 下载链接: http:// ...
- PHP自学4——通过mail函数将feedback界面用户填写表单信息发送至指定邮箱
这一讲的内容依旧简单(谁叫PO主水平菜,依旧是个弱鸡ORZ),通过PHP的内置mail函数将一个反馈界面的信息发送到指定邮箱.在Windows平台不能直接需要使用该函数,需要下载一个sendmail并 ...
- python实现树莓派开机自动发送IP到指定邮箱
#!/usr/bin/python # -*- coding:UTF-8 -*- #测试发送邮件163邮箱发送到qq邮箱 import smtplib from email.mime.text imp ...
随机推荐
- Dubbo-聊聊通信模块设计
前言 Dubbo源码阅读分享系列文章,欢迎大家关注点赞 SPI实现部分 Dubbo-SPI机制 Dubbo-Adaptive实现原理 Dubbo-Activate实现原理 Dubbo SPI-Wrap ...
- django-environ学习
官方说明:https://django-environ.readthedocs.io/en/latest/index.html install pip install django-environ q ...
- Go语言核心36讲07
在前文中,我解释过代码块的含义.Go语言的代码块是一层套一层的,就像大圆套小圆. 一个代码块可以有若干个子代码块:但对于每个代码块,最多只会有一个直接包含它的代码块(后者可以简称为前者的外层代码块). ...
- 并发bug之源(二)-有序性
什么是有序性? 简单来说,假设你写了下面的程序: int a = 1; int b = 2; System.out.println(a); System.out.println(b); 但经过编译器/ ...
- Linux 中的内部命令和外部命令
Linux 中的内部命令和外部命令 作者:Grey 原文地址: 博客园:Linux 中的内部命令和外部命令 CSDN:Linux 中的内部命令和外部命令 什么是 bash shell ? bash s ...
- 模块/collections/random/time/datetime
内容概要 模块--包的具体使用 编程思想介绍 软件开发--目录规范 常用模块介绍--collections模块 常用模块介绍--time.datetime 常用模块介绍--random 1.包的具体使 ...
- c# 使用委托子窗体改变父窗体控件
首先创建两个窗体,在窗体1和窗体2放上对应的控件 在窗体1的代码如下 using System; using System.Collections.Generic; using System.Comp ...
- 前端学习 linux —— 软件安装(Ubuntu)
软件安装(Ubuntu) 本篇主要讲解 ubuntu 中软件的安装.apt 的源.内网部署案例(graylog 为例),最后是 python 开发准备. apt 和 rpm 在linux 第一篇我们知 ...
- windows 搭建iis文件服务器
1.运行打开控制面板->程序->启用或关闭Windows功能,勾选下面所有的选项. 注意,必须安装功能所需文件. 等待 关闭即可. 2.在控制面板找到管理工具,不同版本的Windows不尽 ...
- jsp 页面返回、本页面刷新
返回上一页面: window.history.go(-1); //返回上一页window.history.back(); //返回上一页 返回上一页面并对上一页面刷新: history.go(-1 ...