有这样的一个场景:

假设生成的测试报告与多人相关,每个人都去测试服务器査看就会比较麻烦,如果把这种主动的且不及时的査看变成被动且及时的査收,就方便多了。

整个程序的执行过程可以分为三个步骤:

①    通过unittest框架的discover()找到匹配测试用例,由HTMLTestRunner的run()方法执行测试用例并生成最新的测试报告。

②    调用new_report()函数找到测试报告目录(test_case)下最新生成的测试报告,返回测试报告的路径。

③    将得到的最新测试报告的完整路径传给send_mail()函数,实现发邮件功能。

实例代码如下:

import unittest
import time
import os
import smtplib
from HTMLTestRunner import HTMLTestRunner
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart #定义发送邮件
def send_mail(file_new):
f=open(file_new,'rb')
mail_body=f.read()
f.close()
#构造附件
att = MIMEText(mail_body, 'base64', 'utf-8')
att["Content-Type"] = 'application/octet-stream'
att["Content-Disposition"] = 'attachment;filename="latestResult.html"'
msg = MIMEMultipart('related')
msg['subject'] = Header("自动化测试报告", 'utf-8')
msg.attach(att)
#加邮件头
#加邮件头
msg['From'] = 'lili1505115417@sina.com <lili1505115417@sina.com>'
msg['To'] = 'lili1505115417@126.com'
smtp=smtplib.SMTP()
smtp.connect("smtp.sina.com",25)
smtp.login("lili1505115417@sina.com","lili123456")
smtp.sendmail('lili1505115417@sina.com','lili1505115417@126.com',msg.as_string())
smtp.quit()
print("email has send out!") #查找测试报告目录,找到最新生成的测试报告文件,并发送
def new_report(test_report):
lists=os.listdir(test_report)
lists.sort(key=lambda fn :os.path.getmtime(test_report+'\\'+fn))
print(('最新的文件为:'+lists[-1]))
file_new=os.path.join(test_report,lists[-1])
print(file_new)
return file_new
if __name__=='__main__':
test_dir = r'E:\selenium+puthon+pycharm学习\test_project\test_case'
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
now = time.strftime("%Y-%m-%d %H-%M-%S")
filename = test_dir + '//' + now + 'result.html'
fp = open(filename, 'wb')
runner = HTMLTestRunner(stream=fp, title='测试报告', description='用例测试执行情况:')
runner.run(discover)
fp.close()
newReport = new_report(test_dir)
send_mail(newReport)

登录126邮件可以查看到:

生成的测试报告通过邮件附件打开可以看到:

web端自动化——selenium测试报告生成、找到测试报告路径、实现发邮件(整合)的更多相关文章

  1. web端自动化——selenium项目集成HTML测试报告

    参考内容: 虫师:<selenium2自动化测试实战——基于python语言> PS:书中的代码,只能做参考,最好还是自己码一码,不一定照搬就全是对的,实践出真知... 随着软件不断迭代功 ...

  2. web端自动化——Selenium Grid原理

     利用Selenium Grid可以在不同的主机上建立主节点(hub)和分支节点(node),可以使主节点上的测试用例在不同的分支节点上运行.  对不同的节点来说,可以搭建不同的测试环境(操作系统.浏 ...

  3. web端自动化——Selenium Server环境配置

    Selenium Server环境配置 下面下载.配置并运行Selenium Server. ①    下载 Selenium Server. 下载地址为:https://pypi.python.or ...

  4. web端自动化——selenium Page Object设计模式

    Page Object设计模式的优点如下: ①    减少代码的重复. ②    提高测试用例的可读性. ③    提高测试用例的可维护性,特别是针对UI频繁变化的项目. 当为Web页面编写测试时,需 ...

  5. 接口自动化、移动端、web端自动化如何做?

    1.<Python+Appium移动端自动化项目实战>-带您进入APP自动化测试的世界https://yuedu.baidu.com/ebook/765b38a5690203d8ce2f0 ...

  6. python+selenium +unittest生成HTML测试报告

    python+selenium+HTMLTestRunner+unittest生成HTML测试报告 首先要准备HTMLTestRunner文件,官网的HTMLTestRunner是python2语法写 ...

  7. web端自动化——Python的smtplib发送电子邮件

    SMTP (Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. Python的smtplib模块提 ...

  8. Selenium 2自动化测试实战37(自动发邮件功能)

    自动发邮件功能 例如,如果想在自动化脚本运行完成之后,邮箱就可以收到最新的测试报告结果.SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到 ...

  9. selenium+Python(生成html测试报告)

    当自动化测试完成后,我们需要一份漂亮且通俗易懂的测试报告来展示自动化测试成果,仅仅一个简单的log文件是不够的 HTMLTestRunner是Python标准库unittest单元测试框架的一个扩展, ...

随机推荐

  1. python下载图片超时的调查

    在使用python3下载图片时, 常用的方法有urlretrieve和requests两种, 不管哪种方法在网速极慢的情况下, 会出现图片下载卡住现象.那如何解决呢? 小编根据网上提供的资料测试了几种 ...

  2. redis系列(五):搭建redis-cluster集群

    1.为什么要用redis-cluster a.并发要求 redis官方声称可以达到10万每秒,但是如果业务需要每秒100万条呢?b.数据量太大 一台服务器的内存正常是16-256G,如果业务需要500 ...

  3. Python3OS文件/方法

    Python3OS文件/方法 os模块提供了非常丰富的方法用来处理文件和目录. 方法 描述 os.access(path,mode) 检验权限模式 os.chdir(path) 改变当前工作目录 os ...

  4. mac 安装 pycharm

    下载安装 链接:https://pan.baidu.com/s/19Hm6yZPL_mOTVAb5YQBZKA 密码:j73n 激活码 56ZS5PQ1RF-eyJsaWNlbnNlSWQiOiI1N ...

  5. BAT 批量执行SQL脚本

    需要在BAT的sqlcmd中设置数据库连接信息. https://files.cnblogs.com/files/gguozhenqian/BAT%E6%89%A7%E8%A1%8CSQL%E8%84 ...

  6. JavaWeb之基础(1) —— 文件、目录结构和创建项目

    1. JavaWeb应用 JavaWeb应用从大类上分为静态和动态两种. 静态应用就是传统的HTML文件+素材资源构造的静态网页,不需要特殊的配置.JavaWeb也不是专门用来做静态网站的. 动态应用 ...

  7. SpringContextHolder 作用

    以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候取出ApplicaitonContext. 使用方式.在启动类里添加Bean package com.y ...

  8. GDI+ Image 读取内存二进制流显示图片

    int iBmpSize = cd.nTotleLen; HGLOBAL hMemBmp = GlobalAlloc(GMEM_FIXED, iBmpSize); IStream* pStmBmp = ...

  9. keep-alive 实现从列表页到详情页,然后再回到列表页并保持原来列表页的页码数,并且只刷新数据

    思路: keep-alive应用场景介绍 <keep-alive> 不会在函数式组件中正常工作,因为它们没有缓存实例.结合router,缓存部分页面 activated 和 deactiv ...

  10. springMVC Controller 参数映射

    springMVC 对参数为null或参数不为null的处理 - 小浩子的博客 - CSDN博客https://blog.csdn.net/change_on/article/details/7664 ...