Python+Selenium 自动化测试获取测试报告内容并发送邮件
时间:2019-08-23
本文章向大家介绍Python+Selenium 自动化测试获取测试报告内容并发送邮件,主要包括Python+Selenium 自动化测试获取测试报告内容并发送邮件使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Python+Selenium 自动化测试获取测试报告内容并发送邮件
这里封装一个send_mail()方法,用于测试完成后读取测试报告内容,并将报告内容通过邮件发送到接收人
SMTP:Simple Mail Transfer Protocol,简单邮件传输协议
1 # coding: utf-8 2 3 import smtplib # 导入smtplib模块 4 from email.mime.text import MIMEText 5 from email.header import Header 6 from .logger import * 7 8 9 def send_email(test_report): 10 11 with open(test_report, 'r', encoding='utf-8') as f: 12 mail_body = f.read() # 打开测试报告,读取报告内容作为邮件内容 13 sender = '*********@***.com' # 发出邮箱 14 receiver = ['******@***.com', '*******@**.com'] # 接收邮箱 15 mail_server = 'smtp.139.com' # 邮箱服务地址,这里以139邮箱为例 16 subject = '自动化测试报告' # 邮件标题 17 username = '#########' # 邮箱登录名 18 passwd = '########' # 密码 19 message = MIMEText(mail_body, 'html', 'utf-8') # 设置邮件格式 20 message['Subject'] = Header(subject, charset='utf-8') 21 # 邮箱登录 22 smtp = smtplib.SMTP() # 实例化smtplib.SMTP()类对象 23 smtp.connect(mail_server) # 连接邮件服务器 24 smtp.login(username, passwd) # 登录 25 # 发送邮件 26 for i in receiver: 27 smtp.sendmail(sender, i, message.as_string()) 28 Logger().get_log().info( '邮箱:' + i + ',发送邮件成功!\n') # 打印log 29 smtp.quit()
发送邮件这点,理论上可以直接使用smtp.sendmail(sender, receiver, message.as_string);
实际使用中发现同时发送到多个邮箱时效果不理想,会出现部分邮箱没有发送;
所以这里使用for循环取接收邮箱遍历发送!
用例执行后,调用此方法即可实现邮件发送
1 # coding: utf-8 2 # Team : Quality Management Center 3 # Author:Carson 4 # Date :2019/6/19 17:26 5 # Tool :PyCharm 6 7 from constant.path import * 8 import HTMLTestRunner 9 from encapsulation.add_case import * 10 from encapsulation.send_mail import * 11 12 # 设置测试报告参数 13 fp = open(report_path, "wb") 14 runner = HTMLTestRunner.HTMLTestRunner(stream=fp, 15 title=u'测试报告标题', 16 description=u'描述信息:', 17 tester=u'测试人员') 18 # run所有用例 19 runner.run(add_test()) 20 fp.close() 21 time.sleep(1) 22 print(u'测试报告生成地址:' + report_path) 23 time.sleep(5) 24 send_email(report_path)
原文地址:https://www.cnblogs.com/valorchang/p/11398339.html
- wpf 控件大小随窗体大小改变而改变
- 零基础学编程036:快速编写一个GUI程序
- WPF TreeView 选择事件执行两次,获取TreeView的父节点的解决方法
- 零基础学编程041:欧拉公式的几何意义
- 零基础学编程040:在Windows上安装Python库的正确姿势
- c++/c 获取cpp文件行号跟文件名
- 零基础学编程042:画函数图像
- C-SATS工程副总裁教你如何用TensorFlow分类图像 part2
- C++11 Lambda表达汇总总结
- TensorFlow开发环境搭建(Ubuntu16.04+GPU+TensorFlow源码编译)
- C++虚析构函数解析
- C-SATS工程副总裁教你如何用TensorFlow分类图像 part1
- 帝国cms文章页调用当前文章URL如何操作?
- dedecms文章页调用地址(当前文章URL)如何操作?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法