一文3000字美满接口主动化测试框架,实现企业微信测试报告
https://i-blog.csdnimg.cn/blog_migrate/d8465102cf84770c020c06b0fde720d6.jpeg媒介
作者在新项目中搭建了Python+Requests+UnitTest+HTMLTestRunner接口主动化测试框架,通过修改配置文件实现环境隔离,一份脚本即可在不同的环境执行接口测试用例。
但是没有实现任何形式的消息通知,也没有集成到Jenkins,缘故原由很简单,由于还没做到很大,而且用户活跃不敷,题目也相对较少,只在上线前后执行一次uat和prod环境。
那这几天想美满一下消息通知功能,让它具备发送消息及报告的功能。
流程
https://i-blog.csdnimg.cn/blog_migrate/b6bbf750aebfe9920af29215aaa54a07.png
代码
流程及代码功能已在注释中说明:
'''Created on 2021年5月12日
@author: qguan'''import timeimport unittest
from Librarys.HTMLTestRunnerNew importHTMLTestRunnerNewfrom common.dirs_config import testcases_path, report_dirfrom unitconfig import env, conffrom 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) # 获取企业微信keyprod_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不能为空") raise url = 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等多种模版,再往下看配置说明中有上传文件的说明:
https://i-blog.csdnimg.cn/blog_migrate/637a5d358ad9d5207005fed3bf68cbaa.png
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。
https://i-blog.csdnimg.cn/blog_migrate/ad50353189210d3a3ffe4633dbad6726.png
都看到这里了,各位靓仔、靓妹,请帮我点一个赞吧!
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰巨的旅程,盼望也能帮助到你!
https://i-blog.csdnimg.cn/blog_migrate/6b805e34eb9f21a554c205d69381ef34.png
https://i-blog.csdnimg.cn/blog_migrate/a58c7b9ce29aa2adc7613786fe61a86b.png
可以在下方我的公众号免费领取一份216页软件测试工程师口试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网步伐原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web主动化测试、APP主动化测试、接口主动化测试、测试高级连续集成、测试架构开辟测试框架、性能测试、安全测试等。
https://i-blog.csdnimg.cn/blog_migrate/f85ebe204bf965c992d52566a164f404.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]