整合自动发邮件功能

解决了前面的问题后,现在就可以将自动发邮件功能集成到自动化测试项目中了。下面重新编辑runtest.py文件

#runtest.py

#coding:utf-8
from HTMLTestRunner import HTMLTestRunner
from email.mime.text import MIMEText
from email.header import Header
import smtplib
import unittest,time,os #===================定义发送邮件======================
def send_mail(file_new):
f=open(file_new,'rb')
mail_body=f.read()
f.close() msg=MIMEText(mail_body,'html','utf-8')
msg['subject']=Header(u"自动化测试报告",'utf-8')
msg['from']='xxxxxx@sina.com'
msg['to']='xxxxxx@qq.com' smtp=smtplib.SMTP()
smtp.connect("smtp.sina.com")
smtp.login("xxxxx","xxxxxxx")
smtp.sendmail("xxxxxxx@sina.com","xxxxxxxx@qq.com",msg.as_string())
smtp.quit()
print('email has send out !') #===================查找测试报告目录,找到最新生成的测试报告文件======================
def new_report(testreport):
lists=os.listdir(testreport)
lists.sort(key=lambda fn:os.path.getmtime(testreport+"\\"+fn))
file_new=os.path.join(testreport,lists[-1])
print(file_new)
return file_new if __name__=="__main__": test_dir='F:\\study\\web_demo1\\test_case'
test_report='F:\\study\\web_demo1\\report' discover=unittest.defaultTestLoader.discover(test_dir,pattern='test_*.py')
now=time.strftime('%Y-%m-%d_%H_%M_%S')
filename=test_report+"\\"+now+"result.html"
fp=open(filename,'wb') runner=HTMLTestRunner(stream=fp,title=u"测试报告",description=u"用例执行情况:")
runner.run(discover)
fp.close() newreport=new_report(test_report)
send_mail(newreport)#发送测试报告

  

执行后,结果如下图所示:

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

Selenium 2自动化测试实战38(整合自动发邮件功能)的更多相关文章

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

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

  2. Python+selenium整合自动发邮件功能

    主要实现的目的是:自动将测试报告以邮件的形式通知相关人员 from HTMLTestRunner import HTMLTestRunner import HTMLTestReport from em ...

  3. Nagios 配置自动发邮件功能

    安装sendmailyum install -y sendmail* mailx 修改防火墙设置,添加25端口到防火墙vi /etc/sysconfig/iptables 重启 iptables.se ...

  4. java实现后台自动发邮件功能

    web.xml文件 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLI ...

  5. 生成html报告并整合自动发动邮件功能

    from HTMLTestRunner import HTMLTestRunnerfrom email.mime.text import MIMETextfrom email.header impor ...

  6. Selenium 与自动化测试 —— 《Selenium 2 自动化测试实战》读书笔记

    背景 最近在弄 appium,然后顺便发现了 Selenium 框架和这本书,恰好这本书也介绍了一些软件测试&自动化测试的理论知识,遂拿过来学习学习.所以本文几乎没有实践内容,大多都是概念和工 ...

  7. Selenium 2自动化测试实战39(Page Object设计模式)

    Page Object设计模式 Page object是selenium自动化测试项目开发时间的最佳设计模式之一,主要体现在对界面交互细节的封装. 1.认识page object优点如下:1.减少代码 ...

  8. python自动发邮件库yagmail

    #### 一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from ...

  9. python自动发邮件库yagmail(转)

    一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from email ...

随机推荐

  1. PPP协议解析一

    转:http://blog.csdn.net/yangzheng_yz/article/details/11526475 在网上搜集了一些有关PPP的资料,整理了一下,不能说是原创,仅供大家学习研究. ...

  2. Django—logging配置

    我写Django项目常用的logging配置. # Django的日志配置项 BASE_LOG_DIR = os.path.join(BASE_DIR, "log") LOGGIN ...

  3. 使用Mysql-magic获取Mysql账户密码

    版权声明:本文为博主原创文章,欢迎转载,转载请注明原文超链接https://www.cnblogs.com/zerotrust/p/10846530.html 本文仅限于技术讨论与分享,严禁用于非法用 ...

  4. IDEA中使用git合并分支的过程报错:cant checkout because of unmerged files

    使用idea的git插件控制代码分支合并时,由于操作不当,报错了,控制台报错如下: cant checkout because of unmerged files,you have to resolv ...

  5. thymeleaf的内联th:inline(在javascript访问model中的数据)

    thymeleaf模板引擎为前端数据的获取提供了较大的便利,在html标签内可通过th标签加${}表达式访问model里的对象数据.但如果不想通过th标签而是简单地访问model对象数据,或是想在ja ...

  6. string::begin

    iterator begin() noexcept; const_iterator begin() const noexcept; iterator end() noexcept; const_ite ...

  7. UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 140: invalid continuation byte

    web阅片系统,遇到dicom文件在文件夹不能正常读取的问题.解决方法如下: def rep7(request): file_path = os.path.dirname(__file__) + re ...

  8. GPU driven pipeline in metal

    https://developer.apple.com/documentation/metal/dynamic_terrain_with_argument_buffers?language=objc ...

  9. Codeforces Round #456 (Div. 2) 912E E. Prime Gift

    题 OvO http://codeforces.com/contest/912/problem/E 解 首先把这个数字拆成个子集,各自生成所有大小1e18及以下的积 对于最坏情况,即如下数据 16 2 ...

  10. Nginx的TCP/UDP调度器

    安装nginx [root@proxy ~]# yum –y install gcc pcre-devel openssl-devel //安装依赖包 [root@proxy ~]# .tar.gz ...