当前位置:   article > 正文

完善接口自动化测试框架,实现企业微信测试报告_企业微信测试环境

企业微信测试环境

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

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

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

流程

代码

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

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

分析

Python如何请求发送消息到企业微信,这个流程已经可以自己搜索,这里不再赘述,或者参考企业微信的配置说明。

Python实现

  1. def send_weixin(msg,key=None, **kwargs):
  2. '''
  3. 发送企业微信通知
  4. '''
  5. headers = {"Content-Type":"application/json"}
  6. # 地址
  7. url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={}"
  8. if not key:
  9. print("key不能为空")
  10. raise
  11. url = url.format(key)
  12. if not kwargs: # 默认发送文本
  13. v_type = "text"
  14. k_type = "content"
  15. else: # 如果有传入则按需
  16. v_type=kwargs.get("v_type")
  17. k_type=kwargs.get("k_type")
  18. # 请求主体
  19. data = {
  20. "msgtype": v_type,
  21. v_type: {
  22. k_type: msg
  23. }
  24. }
  25. # 发送请求
  26. requests.post(url, json=data, headers=headers)

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

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

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

 Python实现

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

总结

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

 

最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/291847
推荐阅读
相关标签
  

闽ICP备14008679号