jenkins接入钉钉api接口自动化测试报告自动发送

简介: 该教程介绍了如何在Jenkins上实现接口自动化测试的持续集成,并将可视化报告发送至钉钉工作群。首先,确保准备好了自动化脚本。接着配置Jenkins:安装Git插件,设置源代码管理(如Git)和触发器(定时或推送)。使用Post build task插件处理构建后的报告,读取Allure的prometheusData.txt文件以获取测试结果。最后,安装Ding Talk插件,配置钉钉机器人,通过 Dingtalkchatbot 库发送测试报告信息到钉钉群。整个流程包括Jenkins的定时构建、Git仓库的监听以及自动化报告发送到钉钉的通知。

image.png

一些同学的公司在做接口自动化测试时,难免会要求进行持续集成以及需要将可视化报告发送到诸如钉钉工作群等地方,于是便编写下列相关教程。

jenkins上进行持续集成以及接入钉钉

前提条件

准备好自动化脚本

持续集成

源代码管理模块

安装插件: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构建

  • 生成对应git仓库的凭证api token
  • gitlab举例:个人头像->Settings->Access TokenPersonal Access Tokens->编写名称,有效期以及勾选权限:api->生成,复制token
  • 安装插件GitLab Plugin
  • 配置token:Manage JenkinsSystemGitLab然后按照要求填写gitlab仓库地址以及获取的token便可创建一个链接凭证
  • 在项目中选中对应链接凭证,便可将该项目和凭证对应的远程仓库关联起来,从而捕获远程仓库的提交合并等行为。
  • 然后就是设置捕获哪些分支的情况作为触发器。

后置处理器插件

插件Post build task

  • 安装插件 Post build task
  • 这个插件是为了提取构建结束后,生成的allure报告信息
  • 通过jenkins中的allure报告插件,生成的数据中存在一个prometheusData.txt的文件,该文件记录着测试用例的通过情况,则可以通过在代码里编写一个读取该文件的方法,然后在构建结束后进行调用。

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')  # 中断数量

接入钉钉api

插件安装:Ding Talk

使用方法

  • jenkins配置钉钉助手
  • Manage jenkins->钉钉图标(我的jenkins版本是2.4,图标在页面底部)
  • 新增机器人,这里定义机器人的名字然后是最关键的webhook这个是一个凭证来链接对应的钉钉群聊里的小机器人。
  • 安全设置(这个是钉钉app在创建群机器人时的设置):
    • ip设置:钉钉群里的机器人只接收指定ip发送请求
    • 关键字:只接收信息中包含关键字的请求。
  • 项目中便会出现钉钉机器人选项,选择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
        )
相关文章
|
7月前
|
XML jenkins 机器人
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
935 0
|
5月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
701 11
|
5月前
|
jenkins Java 持续交付
使用 Jenkins 和 Spring Cloud 自动化微服务部署
随着单体应用逐渐被微服务架构取代,企业对快速发布、可扩展性和高可用性的需求日益增长。Jenkins 作为领先的持续集成与部署工具,结合 Spring Cloud 提供的云原生解决方案,能够有效简化微服务的开发、测试与部署流程。本文介绍了如何通过 Jenkins 实现微服务的自动化构建与部署,并结合 Spring Cloud 的配置管理、服务发现等功能,打造高效、稳定的微服务交付流程。
673 0
使用 Jenkins 和 Spring Cloud 自动化微服务部署
|
8月前
|
存储 弹性计算 JSON
钉钉接口回调问题
当调用钉钉审批接口返回错误提示“form_component_values 参数无效”时,可以尝试以下方法进行排查和解决: 检查 form_component_values 参数的格式是否正确。 确保该参数是一个 JSON 对象,且包含所有必填字段 确保 form_component_values 参数中的所有字段值都是有效的。 如果某个字段的值不符合要求,可能会导致审批流程无法正常提交。
|
10月前
|
jenkins 测试技术 Shell
利用Apipost轻松实现用户充值系统的API自动化测试
API在现代软件开发中扮演着连接不同系统与模块的关键角色,其测试的重要性日益凸显。传统API测试面临效率低、覆盖率不足及难以融入自动化工作流等问题。Apipost提供了一站式API自动化测试解决方案,支持零代码拖拽编排、全场景覆盖,并可无缝集成CI/CD流程。通过可视化界面,研发与测试人员可基于同一数据源协作,大幅提升效率。同时,Apipost支持动态数据提取、性能压测等功能,满足复杂测试需求。文档还以用户充值系统为例,详细介绍了从创建测试用例到生成报告的全流程,帮助用户快速上手并提升测试质量。
|
11月前
|
API
钉钉宜搭--远程API,在其他人访问时无法生效
简介: 描述了一种远程API配置问题的场景。开发人员在本地可正常通过应用表单获取数据,但同组织的其他同事访问时无法获取数据,尽管已设置全部权限。问题是关于如何解决这种跨用户数据访问异常的情况,确保同事间能正常共享数据。
|
12月前
|
监控 jenkins 测试技术
Ansible与Jenkins:自动化工具的对比
Ansible和Jenkins是自动化领域的两大巨头。Ansible专注于配置管理和任务自动化,采用无代理架构,使用YAML定义配置,具有幂等性和可扩展性。Jenkins则擅长持续集成和持续交付(CI/CD),支持丰富的插件生态系统,适用于自动化构建、测试和部署。两者各有优势,Ansible适合配置管理与大规模部署,Jenkins则在CI/CD方面表现出色。结合使用可创建更强大的自动化工作流,提升团队生产力和软件质量。选择工具时应根据具体需求决定。
|
运维 jenkins Java
Jenkins 自动化局域网管控软件构建与部署流程
在企业局域网管理中,Jenkins 作为自动化工具,通过配置源码管理、构建及部署步骤,实现了高效、稳定的软件开发与部署流程,显著提升局域网管控软件的开发与运维效率。
269 5
|
SQL 测试技术 API
如何编写API接口的自动化测试脚本
本文详细介绍了编写API自动化测试脚本的方法和最佳实践,涵盖确定测试需求、选择测试框架、编写测试脚本(如使用Postman和Python Requests库)、参数化和数据驱动测试、断言和验证、集成CI/CD、生成测试报告及维护更新等内容,旨在帮助开发者构建高效可靠的API测试体系。
|
监控 数据管理 测试技术
API接口自动化测试深度解析与最佳实践指南
本文详细介绍了API接口自动化测试的重要性、核心概念及实施步骤,强调了从明确测试目标、选择合适工具、编写高质量测试用例到构建稳定测试环境、执行自动化测试、分析测试结果、回归测试及集成CI/CD流程的全过程,旨在为开发者提供一套全面的技术指南,确保API的高质量与稳定性。

推荐镜像

更多