发送邮件测试报告,这个可以直接复制粘贴代码,都通用。
我这个文件里还有其他的代码,导入的包比较多,单说发邮件的话,只导入邮件相关的几个就可以了。
# -- coding: utf-8 --
import smtplib
import time
from email import encoders
from email.header import Header
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication
from utilpackage.parse_ini_element_locator import *
from utilpackage.dir import *
import importlib
import sys
importlib.reload(sys)
from datetime import datetime
import os
import yaml
import smtplib
class Email():
def send_email(self,file_path):
#param file_path report.html 路径
smtpserver = 'smtp.163.com'
#设置登录邮箱的账号和授权密码
user = '[email protected]'
password = 'XXXXX' #此处是授权码,不是邮箱密码
sender = '[email protected]'
#可添加多个收件人的邮箱
receives = ['[email protected]','[email protected]']
#构造邮件对象
msg = MIMEMultipart('mixed')
#定义邮件的标题
subject = '自动化测试报告'
#HTML邮件正文,定义成字典
msg['Subject'] = Header(subject,"utf-8")
msg['From'] = sender
msg['To'] = ','.join(receives) #这里注意,直接用receivers是不行的会报错
#构造文字内容
text_plain = MIMEText("附件是最新自动化测试报告,请查看!",'html','utf-8')
msg.attach(text_plain)
#构造附件
f = open(file_path,'rb')
mail_body = f.read()
f.close()
text_attr = MIMEText(mail_body,'base64','utf-8')
text_attr["Content-type"] = 'application/octet-stream'
text_attr['Content-Disposition'] = 'attachment; filename = "test_report.html"'
msg.attach(text_attr)
with open(os.path.join(
"D:\AutoProject\ZhongTouKeXinSmartPropertySystem","test_report.html"),
'rb') as f:
mail_body = f.read() #读取测试报告的内容
#将测试报告的内容放在邮件的正文当中
html = MIMEText(mail_body,_subtype='html',_charset='utf-8')
#将html附加在msg里
msg.attach(html)
#print(mail_body)
#邮箱设置时勾选了SSL加密连接,进行防垃圾邮件,SSL协议端口号要使用465
smtp = smtplib.SMTP_SSL(smtpserver,465)
#向服务器标识用户身份
smtp.helo(smtpserver)
#向服务器返回确认结果
smtp.ehlo(smtpserver)
#登录邮箱的账号和授权密码
smtp.login(user,password)
print("开始发送邮件...")
#开始进行邮件的发送,msg表示已定义的字典
smtp.sendmail(sender,receives,msg.as_string())
smtp.quit()
print("已发送邮件")
if __name__ == '__main__':
e = Email()
report = "./test_report.html"
e.send_email(report)
自动化发
邮件
功能也是自动化测试项目中的重要需求之一。在自动化脚本运行完成之后,邮箱就可以收到最新的
测试报告
结果,把这种主动的且不及时的查看变成被动且及时的查收,就方便多了。
首先我们需要一份漂亮且通俗易懂的
测试报告
来展示自动化测试成果, HTMLTestRunner 是
python
标准库 unittest 单元测试框架的一个扩展,它生成易于使用的HTML
测试报告
。
下载地址: http://tungwaiyip.info/software/HTMLTestRunner.html
这个扩展非常简单,只有一个.py文件,选中后直接下载到本地即可。安装方法也很简单,将其复制到
python
的安装
继续集成jenkins+allure+
pytest
+
邮件发送
+钉钉机器人通知实现思路报告截图邮箱发送钉钉机器人发送测试结果jenkins配置运行
python
钉钉、
邮件
脚本配置
邮件发送
(重点构建结束触发另一个任务构建)配置钉钉发送测试
0.
邮件
和钉钉都要在自动化执行完成后再去执行,不然拿到的数据和报告就不是最新的(重点)
1.由于报告是在线展示,我这是本地,就使用selenium去登录截图2个报告的页面,也可以截更多。保存到本地
2.通过邮箱发送截图
附件
实现邮箱发送报告
3.jenkins下
Python
pytest
是一个功能强大的自动化测试框架,可以帮助开发人员编写简洁、高效的测试代码。它提供了丰富的功能和灵活的配置选项,使得测试变得更加容易和可维护。
在使用
pytest
进行自动化测试时,可以使用@
pytest
.mark.parametrize装饰器来定义参数化测试。通过在测试方法上使用该装饰器,可以指定不同的参数值来运行同一个测试方法,从而减少代码的重复编写。[1]
此外,
pytest
还提供了一个配置文件
pytest
.ini,可以用来配置测试的一些参数。在该文件中,可以指定测试文件的搜索路径、命令行参数、文件名称、类名称和方法名称等。[2]
在编写测试代码时,通常会遵循一定的代码格式规范。例如,测试类以"Test"开头,测试方法以"test"开头。这样的命名规范可以帮助
pytest
自动识别和执行测试代码。[4]
要运行
pytest
测试,可以在终端中使用
pytest
命令。如果在使用
pytest
命令时出现不可用的情况,可能需要以管理员身份重新安装
pytest
。[3]
总之,
Python
pytest
是一个功能强大且易于使用的自动化测试框架,可以帮助开发人员编写高效、可维护的测试代码。通过参数化测试、配置文件和代码格式规范,可以更好地组织和管理测试代码。
ERROR: Could not find a version that satisfies the requirement XXXXX (from versions: none)问题解决
19351
INTERNALERROR> AttributeError: ‘CollectReport‘ object has no attribute ‘description‘问题解决
Sauternes:
selenium.common.exceptions.TimeoutException: Message: 问题解决
qq_38988813:
ERROR: Could not find a version that satisfies the requirement XXXXX (from versions: none)问题解决
m0_60059503:
Python生成allure测试报告,allure使用详细说明
qsmy_an:
selenium.common.exceptions.TimeoutException: Message: 问题解决
weixin_46486995:
ERROR: Could not find a version that satisfies the requirement XXXXX (from versions: none)问题解决
pytest+UI自动化测试结果回填到excel并发送excel测试报告邮件