这里封装一个send_mail()方法,用于测试完成后读取测试报告内容,并将报告内容通过邮件发送到接收人

SMTP:Simple Mail Transfer Protocol,简单邮件传输协议

 # coding: utf-8

 import smtplib                            # 导入smtplib模块
from email.mime.text import MIMEText
from email.header import Header
from .logger import * def send_email(test_report): with open(test_report, 'r', encoding='utf-8') as f:
mail_body = f.read() # 打开测试报告,读取报告内容作为邮件内容
sender = '*********@***.com' # 发出邮箱
receiver = ['******@***.com', '*******@**.com'] # 接收邮箱
mail_server = 'smtp.139.com' # 邮箱服务地址,这里以139邮箱为例
subject = '自动化测试报告'   # 邮件标题
username = '#########' # 邮箱登录名
passwd = '########' # 密码
message = MIMEText(mail_body, 'html', 'utf-8') # 设置邮件格式
message['Subject'] = Header(subject, charset='utf-8')
# 邮箱登录
smtp = smtplib.SMTP()                       # 实例化smtplib.SMTP()类对象
smtp.connect(mail_server)                     # 连接邮件服务器
smtp.login(username, passwd)                   # 登录
# 发送邮件
for i in receiver:
smtp.sendmail(sender, i, message.as_string())
Logger().get_log().info( '邮箱:' + i + ',发送邮件成功!\n') # 打印log
smtp.quit()

发送邮件这点,理论上可以直接使用smtp.sendmail(sender, receiver, message.as_string);

实际使用中发现同时发送到多个邮箱时效果不理想,会出现部分邮箱没有发送;

所以这里使用for循环取接收邮箱遍历发送!

用例执行后,调用此方法即可实现邮件发送

 # coding: utf-8
# Team : Quality Management Center
# Author:Carson
# Date :2019/6/19 17:26
# Tool :PyCharm from constant.path import *
import HTMLTestRunner
from encapsulation.add_case import *
from encapsulation.send_mail import * # 设置测试报告参数
fp = open(report_path, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
title=u'测试报告标题',
description=u'描述信息:',
tester=u'测试人员')
# run所有用例
runner.run(add_test())
fp.close()
time.sleep(1)
print(u'测试报告生成地址:' + report_path)
time.sleep(5)
send_email(report_path)

Python+Selenium 自动化测试获取测试报告内容并发送邮件的更多相关文章

  1. Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试(自由风格)

    Jenkins简介 Jenkins是Java编写的非常流行的持续集成(CI)服务,起源于Hudson项目.所以Jenkins和Hudson功能相似. Jenkins支持各种版本的控制工具,如CVS.S ...

  2. Python+selenium之获取文本值和下拉框选择数据

    Python+selenium之获取文本值和下拉框选择数据 一.结合实例进行描述 1. 实例如下所示: #新增标签操作 def func_labels(self): self.driver.find_ ...

  3. Python+selenium之读取配置文件内容

    Python+selenium之读取配置文件内容 Python支持很多配置文件的读写,此例子中介绍一种配置文件的读取数据,叫ini文件,python中有一个类ConfigParser支持读ini文件. ...

  4. Python+Selenium自动化-获取页面信息

    Python+Selenium自动化-获取页面信息   1.获取页面title title:获取当前页面的标题显示的字段 from selenium import webdriver import t ...

  5. Python+selenium自动化测试中Windows窗口跳转方法

    Python+selenium自动化测试中Windows窗口跳转方法 #第一种方法 #获得当前窗口 nowhandle=driver.current_window_handle #打开弹窗 drive ...

  6. python+selenium 自动化测试实战

    一.前言: 之前的文章说过, 要写一篇自动化实战的文章, 这段时间比较忙再加回家过11一直没有更新博客,今天整理一下实战项目的代码共大家学习.(注:项目是针对我们公司内部系统的测试,只能内部网络访问, ...

  7. python + selenium + PhantomJS 获取腾讯应用宝APP评论

    PhantomJS PhantomJS 是一个基于WebKit的服务器端JavaScript API,它无需浏览器的支持即可实现对Web的支持,且原生支持各种Web标准,如DOM 处理.JavaScr ...

  8. python selenium 自动化测试web

    如何使用python完成自动化测试web页面呢?首选selenium   那基于python的selenium如何使用,下面看一段测试案例: 基于python的selenium 安装方法: pip i ...

  9. 《一头扎进》系列之Python+Selenium自动化测试框架实战篇6 - 价值好几K的框架,呦!这个框架还真牛叉哦!!!

    1. 简介 本文开始介绍如何通过unittest来管理和执行测试用例,这一篇主要是介绍unittest下addTest()方法来加载测试用例到测试套件中去.用addTest()方法来加载我们测试用例到 ...

随机推荐

  1. Powershell 常见问题

    unapproved verbs WARNING: The names of some imported commands from the module 'todo' include unappro ...

  2. YTU 2918: Shape系列-4

    2918: Shape系列-4 时间限制: 1 Sec  内存限制: 128 MB 提交: 276  解决: 232 题目描述 小聪送给小亮和小华的形状他们都很喜欢,小亮和小华非要比一下他们两个的形状 ...

  3. MARGIN-BEFORE MARGIN-AFTER MARGIN-START MARGIN-END

    总的来说:这是CSS3.0的对于文章段P容器的定义方法语句!display:block这个样式,只定义了P容器为一个块;后面四句是CSS3中的样式定义方法:-webkit-margin-before: ...

  4. JAVA web简单的登录界面jsp实现

    此次试验所用到的软件是myeclipse10,tomcat7,Dreamweaver,sqlserver2008数据库.可以实现用户使用用户名和密码登录.如果登录成功,页面会显示登录成功,如果密码错误 ...

  5. 实现静默安装APK的方法

    需要满足的条件: 内置到ROM.即APK包的安装位置是/system/app下. 下面以 test.apk 为例,演示这个操作.需要准备一台已经获得 Root 权限的手机. 1.通过 USB 连接手机 ...

  6. java的内部类解析

    内部类分为四种: 成员内部类.类方法与普通方法同级: 局部内部类.类方法内部,局部内部类有构造器,通过构造器把外部的变量传入局部内部类再使用是完全可以的 匿名内部类.匿名内部类是唯一没有构造器的类,和 ...

  7. Linux网络协议栈(三)——网络设备(1)

    网络设备(network device)是内核对网络适配器(硬件)的抽象与封装,并为各个协议实例提供统一的接口,它是硬件与内核的接口,它有两个特征:(1)    作为基于硬件的网络适配器与基于软件的协 ...

  8. sql 指删除表,改表名,改字段名

    删除表: DECLARE @Table NVARCHAR(30) DECLARE tmpCur CURSOR FOR SELECT name FROM sys.objects WHERE TYPE=' ...

  9. (6)css盒子模型(基础下)

    一.理解多个盒子模型之间的相互关系 现在大部分的网页都是很复杂的,原因是一个“给人用的”网页中是可能存在着大量的盒子,并且它们以各种关系相互影响着. html与DOM的关系 详情了解“DOM” :ht ...

  10. WPF-DataGrid(数据表格)美化

    我们不多哔哔先上图: 数据表格使用背景: 当我们在做二次开发发现我我们的表格无法向WEB的表格一样好看,这时我们就需要对数据表格进行美化和重构 表格美化思维引导: WPF数据表格是由表头和表体(内容) ...