赞
踩
一些同学的公司在做接口自动化测试时,难免会要求进行持续集成以及需要将可视化报告发送到诸如钉钉工作群等地方,于是便编写下列相关教程。
准备好自动化脚本
安装插件:Git plugin
获取凭证:http拉取链接对应:登录账号密码,id置空,描述任意
指定分支:格式为*/xxx
比如*/dev
定时触发:
jenkins
项目中构建触发器->Build periodically
- 采用五颗*占位符的方式书写。
- 分别为:分钟,小时,一个月中第几天,第几月,一周中第几天
- 常用格式:
- H/30 * * * * 每30分钟构建一次
- H H/2 * * * 每2个小时构建一次
- 0 8 * * * 每天早上8点构建一次
- 0,8,12,22 * * * 每天8点,12点,22点构建各一次
推送触发:
当指定远端仓库存在推送或合并行为时,触发jenkins
构建
Access Token
→ Personal Access Tokens
->编写名称,有效期以及勾选权限:api
->生成,复制token
GitLab Plugin
token
:Manage Jenkins
→ System
→ GitLab
然后按照要求填写gitlab
仓库地址以及获取的token
便可创建一个链接凭证插件Post build task
Post build task
allure
报告信息- path = os.path.abspath(os.path.dirname((__file__)))
-
- try:
- with open(path + r'/allure-results/html/export/prometheusData.txt', 'r') as f:
- for lines in f: # 通常这里应该是 'line' 而不是 'lines',因为每次迭代都是一行
- parts = lines.strip('\n').split(' ') # 去除换行符并按空格分割
- if len(parts) >= 2: # 确保至少有两个元素
- launch_name = parts[0]
- num = parts[1]
- d.update({launch_name: num}) # 更新或添加键值对到字典
- print(d) # 在文件读取完成后打印字典
- except FileNotFoundError:
- print("文件未找到或无法打开")
- except IOError as e:
- print(f"打开文件时发生I/O错误: {e}")
- print(d)
- retries_run = d.get('launch_retries_run') # 运行总数
- print('运行总数:{}'.format(retries_run))
- status_passed = d.get('launch_status_passed') # 通过数量
- print('通过数量:{}'.format(status_passed))
- status_failed = d.get('launch_status_failed') # 不通过数量
- print('没通过数量:{}'.format(status_failed))
- status_broken = d.get('launch_status_broken') # 中断数量
-

插件安装:Ding Talk
使用方法
jenkins
配置钉钉助手Manage jenkins
->钉钉图标(我的jenkins
版本是2.4,图标在页面底部)webhook
这个是一个凭证来链接对应的钉钉群聊里的小机器人。jenkins
配置好的机器人,便可发送基本信息,不过此处并不用这种方式来向钉钉群聊发送消息,而是通过代码调用钉钉机器人开放的接口。dingtalkchatbot
来完成对钉钉机器人发送请求,并且通过关键字的方式通过安全检验。jenkins
自动化脚本运行完毕后,通过post build task
来触发该后置脚本的运行,便可获取并发送刚刚生成的测试报告的信息到钉钉群里。- from dingtalkchatbot.chatbot import DingtalkChatbot
- # jenkins登录地址
- jenkins_url = "http://xxxx:8282/"
- # 获取jenkins对象
- server = jenkins.Jenkins(jenkins_url, username='xxxx', password='xxxx') # Jenkins登录名 ,密码
- # job名称
- job_name = "job/xxxxx/" # Jenkins运行任务名称
- # job的url地址
- job_url = jenkins_url + job_name
- # 获取最后一次构建
- job_last_build_url = server.get_info(job_name)['lastBuild']['url']
- # 报告地址
- report_url = job_last_build_url + 'allure' # 'allure'为我的Jenkins全局工具配置中allure别名
- def send_dingtalk(self):
- d = {}
- path = os.path.abspath(os.path.dirname((__file__)))
-
- try:
- with open(path + r'/allure-results/html/export/prometheusData.txt', 'r') as f:
- for lines in f: # 通常这里应该是 'line' 而不是 'lines',因为每次迭代都是一行
- parts = lines.strip('\n').split(' ') # 去除换行符并按空格分割
- if len(parts) >= 2: # 确保至少有两个元素
- launch_name = parts[0]
- num = parts[1]
- d.update({launch_name: num}) # 更新或添加键值对到字典
- print(d) # 在文件读取完成后打印字典
- except FileNotFoundError:
- print("文件未找到或无法打开")
- except IOError as e:
- print(f"打开文件时发生I/O错误: {e}")
- print(d)
- retries_run = d.get('launch_retries_run') # 运行总数
- print('运行总数:{}'.format(retries_run))
- status_passed = d.get('launch_status_passed') # 通过数量
- print('通过数量:{}'.format(status_passed))
- status_failed = d.get('launch_status_failed') # 不通过数量
- print('没通过数量:{}'.format(status_failed))
- status_broken = d.get('launch_status_broken') # 中断数量
-
- con = {
- "content": "Pytest_Allure_Demo自动化脚本执行完成。\n"
- "测试概述:\n"
- "运行总数: " + retries_run + "\n"
- "通过数量: " + status_passed + "\n"
- "失败数量: " + status_failed + "\n"
- "中断数量: " + status_broken + "\n"
- "构建地址:" + job_url + "\n"
- "报告地址:" + report_url
- }
-
- # 获取路径,目的是找到report.html文件的路径
- path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) # 获取当前路径
- html_path = os.path.join(path, "allure-results/html/index.html") # 获取html格式报告文件的路径
- tile = time.strftime("%Y-%m-%d %H:%M:%S")
- # WebHook地址,你钉钉上创建自定义机器人时生成的值
- webhook = 'xxxx'
- # 初始化机器人小丁
- xiaoding = DingtalkChatbot(webhook)
- ding = DingTalk()
- jd = json.dumps(con)
- # xixi = ding.read_report(html_path)
- xiaoding.send_text(
- # Qa-审核后台自动化是机器人的关键字,必须要保持一致
- msg='Qa-冼喆\n\n' + con["content"] + "\n\n项目url:**/" + "\n\n执行时间:" + tile
-

自动化测试相关教程推荐:
2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili
2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili
测试开发相关教程推荐
2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili
postman/jmeter/fiddler测试工具类教程推荐
讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili
2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili
2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。
我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,
测试开发视频教程、学习笔记领取传送门!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。