首页 > 其他分享 >自动化测试系列:接口自动化测试框架--05通过邮件发送测试结果的封装

自动化测试系列:接口自动化测试框架--05通过邮件发送测试结果的封装

时间:2023-09-20 21:22:23浏览次数:40  
标签:05 text self send attach 测试 自动化 msg email

From: https://mp.weixin.qq.com/s/3w9GT2TYKIhrKCi36-DYRw

---------------------------------------------------------------------------------------

框架功能介绍

1.自动整理接口测试用例:只需使用抓包工具,将需要接口请求另存为HAR文件,执行har2excel.bat即可自动生成接口请求测试用例,同时将接口请求的host地址写入到配置文件(测试用例仅生成正向用例,断言方式默认为整个响应结果结构对比,即实际测试响应结果的JSON字符串结构与测试用例中的预期结果JSON字符串结构对比)(每次生成Excel用例前都会先将原有testcase.xlsx文件备份);

2.支持用例间参数传递,如:在01接口请求参数、或者响应结果中的某一个节点值保存为指定变量名,在02接口中通过${自定义变量名}进行引用;

3.断言方式丰富:JSON结构对比、JSON节点值大于XXX、JSON节点值等于XXX、节点值不等于XXX、JSON节点值小于XXX、JSON节点值包含XXX、JSON节点值不包含XXX、JSON节点名称是否存在、JSON节点值数组长度大于XXX、JSON节点值数组长度等于XXX、JSON节点值数组长度小于XXX、JSON节点值类型为XXX(int、str、list、dict、float、tuple);

4.自动生成python测试脚本(根据config.py文件中CreateTestScript值决定),测试人员可以对生产的测试脚本进行修改,修改后需修改config.py文件中CreateTestScript值不=1,否则仍会重新生成新的测试脚本并按照新的测试脚本执行测试(每次生成脚本都会先将test*.py的测试脚本备份,但测试过程不再执行);

5.测试执行结果回写Excel表格:测试执行结果会回写到Excel测试用例中,同时测试用例执行完成后会自动打开浏览器呈现本次测试的测试报告。

6.详细的log日志:每执行一次测试,会产生一个log文件,存放在log目录下,记录本次测试脚本执行所有过程;

 

目录结构

一下两图以及代码部分参见引文(这里格式混乱)

Image

Image

接口自动化测试结束后,将测试结果通过邮件发送给相关人员,本文将分享python发送邮件的封装。

#!/usr/bin/env python3# -*- coding: utf-8 -*-from datetime import datetimeimport osimport smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMEText
class HandleEmail():
def __init__(self, host="smtp.qq.com", port=25, *args, **kwargs): self.host = host self.port = port
# 添加文本 def add_text(self, text): return MIMEText(text, "plain", "utf-8")
# 添加html文本 def add_html_text(self, html): return MIMEText(html, "html", "utf-8")
# 添加附件,图片,txt,pdf,zip def add_accessory(self, filepath): res = MIMEText(open(filepath, "rb").read(), "base64", "utf-8") res.add_header('Content-Disposition','attachment',filename=os.path.basename(filepath)) return res
# 添加主题 发件人,收件人 def add_subject_attach(self, send_email, receiver, subject, sender, attach_info:tuple, send_date=None): """
@param send_email: 发送方email @param receiver: 接收方email群发是列表形式 ["[email protected]",[email protected],....] @param subject: 邮件主题 @param sender: 发送发的名字,一般指测试人员 @param attach_info: 构建附件元组 @param send_date: 发送日期,"%Y-%m-%d %H:%M:%S",当为None时用当前时间发送邮件 @return: msg 可以传给 send_email()方法发送邮件 """
msg = MIMEMultipart('mixed') msg['Subject'] = subject msg['From'] = '{0} <{1}>'.format(sender, send_email) msg['To'] = ";".join(receiver) if send_date: msg['Date'] = send_date else: msg['Date'] = datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S") if isinstance(attach_info, tuple): for i in attach_info: msg.attach(i) return msg
def send_email(self, send_email, pwd, receiver, msg): try: smtp = smtplib.SMTP(self.host, port=self.port) smtp.login(send_email, pwd) smtp.sendmail(send_email, receiver, msg.as_string()) print("{0}给{1}发送邮件成功,发送时间:{2}".format(send_email, receiver, datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S"))) except Exception as e: print('SMTP Exception:\n' + str(e) + '\n') raise e finally: smtp.quit()
def send_public_email(self,send_email, receiver, pwd, sender, subject, send_date=None, text="",hmtl="",filepath=None): attach_info = [] text_plain = self.add_text(text=text) attach_info.append(text_plain) if hmtl: text_html = self.add_html_text(hmtl=hmtl) attach_info.append(text_html) elif filepath : file_attach = self.add_accessory(filepath=filepath) attach_info.append(file_attach) # 构建附件元组 attach_info = tuple(attach_info) # 添加主题和附件信息到msg msg = self.add_subject_attach(send_email,receiver,subject,sender,attach_info=attach_info,send_date=send_date) # 发送邮件 self.send_email(send_email, pwd, receiver, msg)if __name__ == '__main__': send_email = "[email protected]" receiver = ['[email protected]','[email protected]'] pwd = "123456" sender = "" subject = "测试邮件发送功能" text = "各位同事:\n大家好,以下为本次测试报告.\n"    HandleEmail().send_public_email(send_email, receiver, pwd, sender, subject, send_date=None, text=text,hmtl="",filepath="测试结果文件路径")

 

标签:05,text,self,send,attach,测试,自动化,msg,email
From: https://www.cnblogs.com/Raul2018/p/17718441.html

相关文章

  • Windows下FFMPEG调用测试(解码264)
    #include<stdio.h>#include<stdlib.h>#include<string.h>extern"C"{#include<libavcodec/avcodec.h>charav_error[AV_ERROR_MAX_STRING_SIZE]={0};#defineav_err2str(errnum)av_make_error_string(av_error,AV_ERROR......
  • 使用openssl创建ssl证书,用于测试https服务
    一个web站点要对外提供https服务就需要ssl证书,ssl证书可以从云服务厂商那里购买,通常也能申请到免费的,但是如果只是为了测试,则可以使用openssl来创建ssl证书。下面是完整的生成过程:第一步:创建私钥opensslgenrsa-outserver.key2048第二步:创建签名请求文件opensslreq-new-key......
  • Java学习之路--GUI编程05
    packagecom.gui.lesson05;importjavax.swing.*;importjava.awt.*;importjava.net.URL;//2023.3.24GUI编程--Swing--JButton按钮学习publicclassJButtonDemo01extendsJFrame{publicJButtonDemo01(){Containercontainer=this.getContentPane();//Contain......
  • 工业交换机为什么有必要进行老化测试?
    我们可以根据客户的要求来制定老化测试的检测标准,如果没有特别的要求,我们将依照国家相应的标准进行老化测试检验。老化测试的主要目的是通过模拟产品在现实使用过程中所面临的各种恶劣条件,对产品进行高强度的测试。同时,根据产品的使用要求,合理预测其使用寿命。老化测试是为了确保产......
  • vue-day05
    补充1.图片在接口中返回一些数据和图片地址,而不是图片的二进制内容{code:100,msg:'成功',img:地址}2.md5不是加密,摘要算法动态组件<component:is="who"></component>component标签的is属性等于组件名字,这里就会显示这个组件HTML<!DOCTYPEhtml><html......
  • 火山引擎A/B测试在消费行业的案例实践
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群近日,火山引擎数智平台举办了“走进火山-全链路增长:数据飞轮转动消费新生力”的活动,其中火山引擎数智平台DataTester产品负责人分享了火山引擎AB测试(DataTester)在消费行业的应用实践,并发布了产品近......
  • Windows下ffmpeg调用测试(YUV420P编码)
    1下载静态库和动态库如果你是动态加载,可以直接使用动态库(dlopen等);否则就才用动态+静态的方式(动态库的静态加载方式);或者直接将静态库编译到你的执行程序(纯静态组件使用);https://www.gyan.dev/ffmpeg/builds/#libraries 添加组件vs2022: 属性->c/c++->附加包含目录;将头文件......
  • 火山引擎A/B测试在消费行业的案例实践
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群近日,火山引擎数智平台举办了“走进火山-全链路增长:数据飞轮转动消费新生力”的活动,其中火山引擎数智平台DataTester产品负责人分享了火山引擎AB测试(DataTester)在消费行业的应用实践,并发......
  • pytest测试框架中数据分离以及测试用例参数化
    在进行测试自动化过程中,一个重要的最佳实践就是实现测试脚本和测试数据的分离。本文将涉及2个主题,一个是在pytest中如何实现测试用例脚本数据的分离,测试用例如何读入测试数据;二是在pytest中如何实现测试用例参数化。这两点是有区别的,如下图:flowchartLRTC[测试脚本]-->|读取外......
  • impdp报ORA-39405,手动更新DST v41版本
    前言业务部门使用impdp进行数据加载时报错,错误信息如下所示。ORA-39405:OracleDataPumpdoesnotsupportimportingfromasourcedatabasewithTSTZversion41intoatargetdatabasewithTSTZversion32.错误提示信息已经非常显示,源端数据库的TSTZ版本为41......