Selenium + Python 自动化测试14(发送报告)

news2024/9/21 21:46:55

        我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。

上一篇我们讨论了使用HTMLTestRunner 生成HTML报告的方法。

         本篇文章我们接着讲生成HTML报告是否可以自动邮件发送出去,提高我们测试报告的及时性,方便性,避免自己手动操作发送。

1、SMTP介绍

         SMTP: simple mail transfer protocol  简单邮件传输协议。是一组由源地址到目的地址传送邮件的规则。

         python 的smtplib 模块提供一个很方便的路径用于发送电子邮件。它是对SMTP进行封装而来。我们可以SMTP对象的sendmail 来发送邮件。可以先使用help()查看使用方式:

>>> from smtplib import SMTP

>>> help(SMTP)

connect(self, host='localhost', port=0, source_address=None)

 |      Connect to a host on a given port.

 |     

 |      If the hostname ends with a colon (`:') followed by a number, and

 |      there is no port specified, that suffix will be stripped off and the

 |      number interpreted as the port number to use.

 |     

 |      Note: This method is automatically invoked by __init__, if a host is

 |      specified during instantiation.

login(self, user, password, *, initial_response_ok=True)

 |      Log in on an SMTP server that requires authentication.

 |     

 |      The arguments are:

 |          - user:         The user name to authenticate with.

 |          - password:     The password for the authentication.

 |     

 |      Keyword arguments:

 |          - initial_response_ok: Allow sending the RFC 4954 initial-response

 |            to the AUTH command, if the authentication methods supports it.

 |     

 |      If there has been no previous EHLO or HELO command this session, this

 |      method tries ESMTP EHLO first.

 |     

 |      This method will return normally if the authentication was successful.

 |     

 |      This method may raise the following exceptions:

 |     

 |       SMTPHeloError            The server didn't reply properly to

 |                                the helo greeting.

 |       SMTPAuthenticationError  The server didn't accept the username/

 |                                password combination.

 |       SMTPNotSupportedError    The AUTH command is not supported by the

 |                                server.

 |       SMTPException            No suitable authentication method was

 |                                found.

sendmail(self, from_addr, to_addrs, msg, mail_options=[], rcpt_options=[])

 |      This command performs an entire mail transaction.

 |     

 |      The arguments are:

 |          - from_addr    : The address sending this mail.

 |          - to_addrs     : A list of addresses to send this mail to.  A bare

 |                           string will be treated as a list with 1 address.

 |          - msg          : The message to send.

 |          - mail_options : List of ESMTP options (such as 8bitmime) for the

 |                           mail command.

 |          - rcpt_options : List of ESMTP options (such as DSN commands) for

 |                           all the rcpt commands.

1)connect(host,port)

host:指定连接的邮箱服务器

port: 指定连接的邮箱服务器端口号

2)login(user,password)

登录邮箱的用户和密码

3)sendmail(from_addr,to_addr,msg...)

from_addr:邮件发送者地址

to_addr:邮件接受者邮箱

msg:发送的消息

2、发送报告到指定邮箱

1)编写执行侧用例集的代码

这部分参考之前的,我们上一节已经讨论过的:


#定义测试用例集的目录

test_dir = './'

report_dir = './report'  #测试报告地址

discover = unittest.defaultTestLoader.discover(test_dir,pattern="test_*.py")#所有要执行的文件



if __name__ == '__main__':

    now = time.strftime("%Y-%m-%d %H_%M_%S")   #当前时间,格式是年月日时分秒

    file_name report_dir+ '/' + now + 'result.html'   #报告名称,加上当前时间避免重复

    fp = open(file_name,'wb')      #打开报告文件,读写权限



    runner = HTMLTestRunner(stream=fp,title="Swag Labs 网站测试报告",description="用例测试情况:")#HTML报告设置

    runner.run(discover)  #执行测试案例

    fp.close()   #关闭报告文件

2、编写发送部分

编写对应的发送邮件的函数。

from email.mime.text import MIMEText

from email.header import Header



#定义发送邮件的函数

def send_report_by_mail(file_name):

    f=open(file_name,'rb'#打开文件

    report_body=f.read()

    f.close()



    msg=MIMEText(report_body,'html','utf-8') #内容

    msg['Subject']= Header('Swag Labs 网站测试报','utf-8')



    smtp = smtplib.SMTP()

    smtp.connect('smtp.163.com') #发送邮箱服务器

    smtp.login('用户名@163.com','密码')

    smtp.sendmail('用户名@163.com','接收邮件用户名@163.com',msg.as_string())

    smtp.quit()

    print("报告已通过邮件发送")



#定义测试用例集的目录

test_dir = './'

report_dir = './report'  #测试报告地址

discover = unittest.defaultTestLoader.discover(test_dir,pattern="test_*.py")#所有要执行的文件



if __name__ == '__main__':

    now = time.strftime("%Y-%m-%d %H_%M_%S")   #当前时间,格式是年月日时分秒

    file_name report_dir+ '/' + now + 'result.html'   #报告名称,加上当前时间避免重复

    fp = open(file_name,'wb')      #打开报告文件,读写权限



    runner = HTMLTestRunner(stream=fp,title="Swag Labs 网站测试报告",description="用例测试情况:")#HTML报告设置

    runner.run(discover)  #执行测试案例

    fp.close()   #关闭报告文件



    send_report_by_mail(file_name)   #发送报告

如下图所示发送邮件成功:

收到了邮件如下:

今天就先学习到这里。

每天进步一点点,加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2039209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PCB入门笔记—绘制一个只有两个排针的PCB全流程记录—立创EDA专业版

PCB绘制入门🚀 硕士毕业之后准备进入博士阶段,本科阶段做的硬件,硕士阶段做的算法,然后博士阶段又要做回硬件了,因此也是打算补一补PCB相关的内容和知识,毕竟做控制的话,之后这也是不能躲开的必…

前端工程化-02.Yapi接口管理平台

YApi Pro-高效、易用、功能强大的可视化接口管理平台 图片中链接已失效,此处为新链接 选择添加接口,输入接口名称和接口路径。 创建成功后自动进入接口页面,点击编辑,可以编辑完善这个接口的信息。两个非常重要的信息&#xff1a…

进程waitwaitpid、线程

一、wait wait功能 1、获取子进程退出状态,分析子进程是否已经退出(变成僵尸态) 2、回收资源,让僵尸态子进程销毁 wait本身是一个阻塞操作,会使调用者阻塞 2、宏: (1)WIFEXITE…

bug的常见排查和分析思路以及相关的原因分类

作为开发人员,经常会收到来自用户和QA,领导反馈的各种问题。 为了快速问题,我们有时需要站在更高的角度,更全面的看待问题。才能更快锁定问题。 具体的bug还需要结合企业实际业务情况,相关的框架,依赖库&…

海康摄像头(测温型)桌面客户端开发分享

分享一个自己开发的用于企业特殊场景下温度监控告警的一个桌面应用。 关键功能: 1.支持海康摄像头; 2.支持多路视频预览,多通道画面选择预览,支持视频画面回放与下载; 3.支持自动探测摄像头功能,若具备…

RabbitMQ集群部署

RabbitMQ集群部署 简介 消息中间件RabbitMQ,一般以集群方式部署, 主要提供消息的接受和发送,实现各微服务之间的消息异步。 以下将介绍RabbitMQHA方式进行部署。 原理介绍 cookie ​ RabbitMQ底层是通过Erlang架构来实现的,所…

基于java五台山景点购票系统(源码+论文+部署讲解等)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优…

自建Gitlab和Gitlab runner并推送镜像到Harbor

1. 创建虚拟机 整体规划如下 1.1 创建3台虚拟机 系统版本Centos7.9 设置IP分别为 192.168.200.201 、192.168.200.202、 192.168.200.203 1.2 安装docker 3台虚拟机都安装docker,参考文章 安装docker 1.3 修改daemon.json 修改 /etc/docker/daemon.json 文件…

【数字信号处理】第3章 离散时间信号和系统的频域分析,系列的离散时间傅里叶变换,性质,定理(清华大学)

目录 第3章 离散时间信号和系统的 引言 信号和系统的分析方法有两种 模拟信号与系统的时域分析 模拟信号与系统的频域分析 离散时间信号和系统 历史回顾 3.1.1 序列的离散时间傅里叶变换 3.1.2 序列的离散时间傅里叶变换的性质 1. DTFT的周期性 2. 线性 3. 时移(位移…

守护网站心脏:HAProxy负载均衡技术详解(全网最详细)

守护网站心脏:HAProxy负载均衡技术详解 文章目录 **守护网站心脏:HAProxy负载均衡技术详解**haproxy介绍特点功能配置结论 haproxy负载均衡测试haproxy主机操作日志重定向操作 webserver1主机操作webserver2主机操作 haporxy相关配置测试backup参数测速h…

Petalinux 使用相关问题

文章目录 Petalinux 交叉编译环境Petalinux 以太网相关Petalinux 应用层写寄存器操作 Petalinux 交叉编译环境 方法一: 注意:该方法安装时会 和 Petalinux的 gcc-multilib 冲突; sudo apt install cmake sudo apt-get install gcc-arm-lin…

网络协议 十一 ARP,RARP,icmp,websocket,webservice,HTTPDNS,FTP,邮件相关的协议, SMTP,POP,IMAP

ARP 已知IP 求 MAC 的过程 RARP 已知MAC 求 IP 的过程,已被DHCP取代 ICMP websocket 协议,html5中提出的前端使用协议 webservice 技术,已过时 HTTPDNS 之前我们要获得 某一个域名的 IP ,要通过DNS协议 去 运营商的ISP 查询&…

Java | Leetcode Java题解之第327题区间和的个数

题目&#xff1a; 题解&#xff1a; class Solution {public int countRangeSum(int[] nums, int lower, int upper) {long s 0;long[] sum new long[nums.length 1];for (int i 0; i < nums.length; i) {s nums[i];sum[i 1] s;}return countRangeSumRecursive(sum,…

我对意义产生了怀疑!当今社会,一个最基本的因果律(深度好文)——早读(逆天打工人爬取热门微信文章解读)

有时候热搜也是一种预示 引言Python 代码第一篇 洞见 当今社会&#xff0c;一个最基本的因果律&#xff08;深度好文&#xff09;第二篇 空仓结尾 引言 今天真的晚 不过今天会更新两篇 破事真的多 有些人真的很神奇 在你做的时候不断来干预你 然后做得一般的时候就说 你的计划…

计算机图形学 | 动画模拟

动画模拟 布料模拟 质点弹簧系统&#xff1a; 红色部分很弱地阻挡对折 Steep connection FEM:有限元方法 粒子系统 粒子系统本质上就是在定义个体和群体的关系。 动画帧率 VR游戏要不晕需要达到90fps Forward Kinematics Inverse Kinematics 只告诉末端p点&#xff0c;中间…

Simple RPC - 03 借助Netty实现异步网络通信

文章目录 Pre设计技术点1. 接口设计2. 命令类设计3. 异步通信4. 异常处理与超时机制5. 背压机制6. 响应处理 Code封装通信 Transport 接口抽象数据的请求和响应 Command关于版本号 Transport 接口实现类 NettyTransport兜底的超时机制 背压机制 实现 总结 Pre Simple RPC - 01…

ComfyUI中,“鼠标忽然不太好用了”的解决方案---新版本偶遇bug

&#x1f387;背景 这是个很奇怪的界面bug。 最近几天感觉Comfyui的界面操作不好用了&#xff0c;就是鼠标移动到一个节点上&#xff0c;如果想要缩放&#xff0c;按道理应该是在1的位置&#xff0c;但是需要移动到2的位置才能触发缩放的操作。 节点连线的时候&#xff0c;线…

图纸变更频繁,版本管理的高效方法

在工程设计领域&#xff0c;图纸作为设计与制造的核心载体&#xff0c;其变更频繁性已成为常态。如何高效地管理这些不断变化的图纸版本&#xff0c;确保设计信息的准确性和一致性&#xff0c;是每个设计团队面临的重要挑战。本文将探讨几种高效管理图纸版本的方法&#xff0c;…

工作绩效品谷系统2024(代码+论文+ppt)

工作绩效品谷系统2024((代码论文ppt),编号:sp009 代码经过修正,确保可以运行,下载地址在文末 技术栈: springbottvuemysql 展示: 下载地址: https://download.csdn.net/download/hhtt19820919/89639099 备注: 专业承接各种程序java,c,c,python,cuda,AI 专业承接论文指导…

haproxy详解

目录 一、haproxy简介 二、什么是负载均衡 2.1 负载均衡的类型 2.2.1 硬件 2.2.2 四层负载均衡 2.2.3 七层负载均衡 2.2.4 四层和七层的区别 三、haproxy的安装及服务信息 3.1 示例的环境部署&#xff1a; 3.2 haproxy的基本配置信息 3.2.1 global 配置参数介绍 3…