python+pytest+json+allure+jenkins搭建接口自动化测试(一)运行成功可生成报告
上一篇文件写着代码运行成功,生成测试报告
本篇写测试报告成功后自动压缩发邮件,创建一个SendEmail.py文件
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import os
import time
from common.common import srmdirFlder
import smtplib
from email.mime.text import MIMEText
# # 配置邮箱服务器信息
mail_postfix="qq.com" #发件箱的后缀# 登陆邮箱
sent=smtplib.SMTP()
sent.connect('smtp.qq.com',25)
mail_user="1****7@qq.com" # 发送人邮箱地址
mail_pass = "slewl***jlpvffad" # 注意:这里不是密码,而应该填写授权码!!
sent.login(mail_user, mail_pass) # 登陆
# 配置发件人、收件人信息
sender = '1***5867@qq.com' # 发件人邮箱
# 编辑邮件内容
receivers = ['128**440@qq.com','1481**1021@qq.com'] # 收件人邮箱地址
def message_config():
#content = MIMEText('测试数据,注意查收') # 正文内容
message = MIMEMultipart() # 多个MIME对象
# 构造附件1
dirpath = r"./reports"
srmdirFlder(dirpath)
time.sleep(5)
content = MIMEText(open('./reports.zip', 'rb').read(), 'base64', 'gb2312')
content["Content-Type"] = 'application/octet-stream'
content["Content-Disposition"] = 'attachment; filename="test.zip"' # 这里的filename可以任意写,写什么名字,邮件中显示什么名字
message.attach(content) # 添加内容
message['Subject'] = '接口测试' # 邮件标题
message['From'] = mail_user # 发件人
message['To'] =','.join(receivers) #收件人,用逗号连接多个邮件,实现群发
return message
def send_mail(message):
try:
sent.sendmail(mail_user, receivers, message.as_string()) #3个参数 发送人,收件人,邮件内容
print('Success')
sent.close()
except smtplib.SMTPException:
print("Error:Fail")
# if __name__ == "__main__":
# print("开始执行")
# message = message_config() # 调用配置方法
# send_mail(message) # 发送邮件
# print("执行结束")
如何设置qq邮箱服务器smtp?
1.登陆网页qq邮箱,点击设置如下图所示
2.点击账户
POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
在里面找到服务这一行,打开POP3或者IMAP,点击后面的开启,根据提示步步操作,需要手机发送短信给qq
3.最终得到授权码,使用qq账号和授权码进行登陆
qq服务器地址:smtp.qq.com 端口25
如何发送前压缩测试报告?新建在comm文件夹中common.py,引入到SendEmail.py文件里
import os, os.path
import zipfile
import platform
def srmdirFlder(dirpath):
# print("原始文件夹路径:" + dirpath)
output_name = f"{dirpath}.zip"
parent_name = os.path.dirname(dirpath)
# print("压缩文件夹目录:", parent_name)
zip = zipfile.ZipFile(output_name, "w", zipfile.ZIP_DEFLATED)
# 多层级压缩
for root, dirs, files in os.walk(dirpath):
for file in files:
if str(file).startswith("~$"):
continue
filepath = os.path.join(root, file)
# print("压缩文件路径:" + filepath)
writepath = os.path.relpath(filepath, parent_name)
zip.write(filepath, writepath)
运行SendEmail.py文件后,如果成功则邮箱会接受到相应的信息
在发送邮件的时候有遇到一个问题:就是发送的压缩文件名称如果是中文,发出去的会是bin文件
后来发现改成英文和数字就是压缩包了。