作者在新项目中搭建了python+requests+unittest+HTMLTestRunner接口自动化测试框架,通过修改配置文件实现环境隔离,一份脚本即可在不同的环境执行接口测试用例。

但是没有实现任何形式的消息通知,也没有集成到jenkins,原因很简单,因为还没做到很大,而且用户活跃不够,问题也相对较少,只在上线前后执行一次uat和prod环境。

那这几天想完善一下消息通知功能,让它具备发送消息及报告的功能。

流程

代码

流程及代码功能已在注释中说明

'''
Created on 2021年5月12日@author: qguan
'''
import time
import unittestfrom Librarys.HTMLTestRunnerNew import  HTMLTestRunnerNew
from common.dirs_config import testcases_path, report_dir
from unitconfig import env, conf
from utils.handle_notice import send_weixin, upload_weixin# 当前时间
curTime = time.strftime("%Y-%m-%d_%H-%M")# 创建测试套件并加载测试用例
suite = unittest.TestSuite()
loader = unittest.TestLoader()
suite.addTest(loader.discover(start_dir=testcases_path, pattern='flaget_*.py'))# 拼接测试报告路径及文件名
report_name = report_dir + "FlagetAPI_{}_report_{}.html".format(env, curTime)# 报告生成器
with open(report_name, "wb") as pf:runner = HTMLTestRunnerNew(stream=pf, title="Flaget接口自动化测试报告", tester="joe-tester", description="{}环境,业务场景接口测试".format(env))runner.run(suite)# 组织报告详情msg = "\n \执行环境:{}\n \测试人员:{}\n \开始时间:{}\n \持续时间:{}\n \测试结果:{},通过率为:{} \n \\n \报告详情需要在PC打开,移动端打开为HTML源码!".format(env, runner.tester, runner.startTime, runner.duration, runner.status, runner.passrate)# 获取企业微信key
prod_key = conf.get_value("notice", "prod_key")
uat_key = conf.get_value("notice", "uat_key")if env == "prod":    # 只在生产环境发送报告给项目涉众media_id = upload_weixin(key=prod_key, filename=report_name)send_weixin(msg, key=prod_key)send_weixin(media_id, key=prod_key, v_type="file", k_type="media_id")
elif env == "uat":    # uat环境报告发送给小组send_weixin(msg, key=uat_key)
复制代码

分析

python如何请求发送消息到企业微信;这个流程已经在其他文章中说明,这里不再赘述,或者参考企业微信的配置说明。

python实现

def send_weixin(msg,key=None, **kwargs):'''发送企业微信通知'''headers = {"Content-Type":"application/json"}# 地址url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={}"if not key:print("key不能为空")raiseurl = url.format(key)if not kwargs: # 默认发送文本v_type = "text"k_type = "content"else: # 如果有传入则按需v_type=kwargs.get("v_type")k_type=kwargs.get("k_type")# 请求主体data = {"msgtype": v_type,v_type: {k_type: msg}}# 发送请求requests.post(url, json=data, headers=headers)
复制代码

问题:怎么上传并发送文件呢?

仔细阅读企业微信机器人配置说明,有如何上传文件及发送;发送消息的主题根据不同的参数来选择是发送文字还是文件;

msgtype:支持text、file、image、markdown、news等多种模版,再往下看配置说明中有上传文件的说明:

python实现

def upload_weixin(key=None, filename=None):"""上传附件到企业微信,获得media_id.然后发送消息通知,可查看文件"""if not key:print("key不能为空")raise# 请求地址url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key={}&type=file".format(key)# 请求头headers = {"Content-Type":"multipart/form-data"}# 请求数据,是rb读取文件流data = {"file":open(filename, "rb")}# 发送请求res = requests.post(url, files=data, headers=headers).json()# 获取结果返回的media_id是给发送消息的接口参数使用的。return res.get("media_id")
复制代码

总结

上面对流程代码实现都进行了分析,如何上传文件和发送消息;再回到开始的那一片代码,逻辑理解就很清楚了;暂时这不集成jenkins。

我还整理了一些资料如果有有需要的可以关注gzh【清零0】

给接口自动化测试框架增色,实现企业微信测试报告相关推荐

  1. Python+unittest+requests 接口自动化测试框架搭建 完整的框架搭建过程 实战

    一.Python+unittest+requests+HTMLTestRunner 完整的接口自动化测试框架搭建_00--框架结构简解 首先配置好开发环境,下载安装Python并下载安装pycharm ...

  2. python接口测试_Python接口自动化测试框架实战开发(一)

    目录 一丶叙述 二丶接口基础知识 三丶接口测试工具 四丶Fiddler的使用 五丶unittest使用 六丶mock服务入门到实战 七丶接口自动化框架设计到开发 一丶叙述 1.项目介绍 整个项目分为四 ...

  3. 2022超级好用的接口自动化测试框架:基于python+requests+pytest+allure实现

    众所周知,目前市面上大部分的企业实施接口自动化最常用的有两种方式: 1.基于工具类的接口自动化,如: Postman+Newman+Jenkins+Git/svn Jmeter+Ant+Jenkins ...

  4. pytest接口自动化测试框架搭建

    文章目录 一. 背景 二. 基础环境 三. 项目结构 四.框架解析 4.1 接口数据文件处理 4.2 封装测试工具类 4.3 测试用例代码编写 4.4 测试用例运行生成报告 一. 背景 Pytest目 ...

  5. 零代码极限封装的【接口自动化测试框架】震碎你的三观

    随着互联网寒冬的到来,测试行业裁员的裁员,找工作的找工作,内卷越来越加剧,那么选择一个学习提升的平台尤为重要,接下来我要说的事情将震碎你的三观,震掉你的眼球,和每个测试人息息相关,测试人都必看. 先自 ...

  6. 基于Python接口自动化测试框架(初级篇)附源码

    目录 1.引言 1.框架设计思路 2.框架设计思路 3.运行程序 4.源码获取 引言 很多人都知道,目前市场上很多自动化测试工具,比如:Jmeter,Postman,TestLink等,还有一些自动化 ...

  7. 接口自动化测试框架搭建:基于python+requests+pytest+allure实现

    目录 一.接口自动化测试框架需要具备什么功能? 二.接口自动化测试框架目录结构 三.日志监控文件的信息 四.搭建具有企业Logo的定制化报告. 众所周知,目前市面上大部分的企业实施接口自动化最常用的有 ...

  8. Java接口自动化测试框架学习

    Java接口自动化测试框架学习 高级软件测试,性能测试,功能测试,自动化测试,接口测试,移动端测试,手机测试,WEB测试,渗透测试,测试用例设计,黑盒测试,白盒测试,UFT高级测试,Android测试 ...

  9. 基于pytest搭建接口自动化测试框架,提供源码

    基于pytest搭建接口自动化测试框架 框架整体介绍和方法教程 新框架(比这个功能多了很多,用例使用yaml编写) 源码框架结构 xmind项目结构介绍 源码地址 使用教程 1.全局变量设置和使用 2 ...

最新文章

  1. ubuntu运行docker报错:invalid mount config for type “bind“: field Source must not be empty.(没解决)
  2. PPT 下载 | 神策数据杜明翰:打造趁手、好用的标签用户画像系统
  3. efcore 批量_【EF Core】Entity Framework Core 批处理语句
  4. 查看及修改当前数据库的所支持的数据库引擎以及默认数据库引擎
  5. 为什么你就是学不会 Numpy ? | 技术头条
  6. ES6 里面的 Promise
  7. matlab肌电信号hz低通滤波器,燕山大学 数字信号处理 课程设计 肌电信号 Matlab 程序汇总...
  8. html 椭圆特效,使用CSS3实现椭圆动画效果
  9. Fiddler抓包(Android app)
  10. Python 简易图形用户界面计算器
  11. 流程图制作原则与示例
  12. 名编辑电子杂志大师教程 | 名编辑电子杂志页面排版最佳尺寸,最佳字体,字号
  13. 此图形驱动程序无法找到兼容的图形…
  14. 射频测试系统|射频信号测试软件NSAT-1000
  15. 希尔顿逸林品牌聚焦亚太市场,推进全球扩张式发展
  16. NTP网络授时服务器在电视播出系统中的应用
  17. html5如何提交到邮箱,如何在html网页中提交表单直接发送到邮箱
  18. 板栗花生鸡脚汤——好女人和老火汤同样需要用心品位
  19. python测试app性能_App性能测试工具MobilePerformance
  20. 【逆天应用】如何用Python实现检测和识别车牌号?(详细教程)

热门文章

  1. PNAS | 菌群大战:“单打独斗之殇”与“分而治之之利”
  2. R语言使用across函数一次性将多个数据列进行离散化(categorize):或者pivot_longer函数转化为长表、对转化为长表的数值数据列进行离散化、pivot_wider将数据转化为宽表
  3. pandas删除dataframe中行内容全是0的数据行(remove rows with all zeros in dataframe)
  4. R语言使用moments包计算偏度(Skewness)和峰度(Kurtosis)实战:计算偏度(Skewness)和峰度(Kurtosis)、确定样本数据是否具有与正态分布匹配的偏度和峰度(假设检验)
  5. R语言使用pwr包的pwr.f2.test函数对线性回归模型(Linear models)进行效用分析(power analysis)的语法
  6. 并发、并行、串行、同步、异步、阻塞、非阻塞
  7. 高斯混合模型GMM、核心参数、高斯混合模型GMM的数学形式
  8. FSWD_1_BasicHtmlCss
  9. debian php 升级,Debian和ubuntu服务器升级PHP7
  10. java swing 外观框架_【GUI】一、Swing外观框架BeautyEye使用