通过Slack接收HeadSpin信息

2024-03-26 11:40
文章标签 信息 接收 slack headspin

本文主要是介绍通过Slack接收HeadSpin信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

构建应用程序并对其进行测试需要在流程的每个步骤中各个利益相关者之间进行大量协作。每次运行完成后,与每个利益相关者手动监控、编译和共享会话数据可能是一场噩梦。如果我们可以通过通信工具将会话数据作为警报发送,它将一次性覆盖更多受众。‍

Slack 是适用于几乎所有组织的团队通信工具,它允许用户在自动化脚本的末尾插入警报。一旦脚本完成执行,会话数据将被自动收集并广播给选定的用户或频道。

用户可以使用 Webhooks 或 Slack API 通过 Slack 发送警报,也可以将文件附加到它们。通过上述任一方法发送警报的第一步是创建一个 Slack 插件。

通过创建 Slack 应用程序,用户可以访问 Slack 的大量功能,其中发送自动警报只是其中之一。在组织级别创建 Slack 应用程序允许整个组织根据需要接收警报和通知。请参阅此快速指南以创建 Slack 插件。

在 Slack 中使用 Webhooks 发送警报

传入 Webhooks 是将警报从应用程序发送到 Slack 的最简单方法。

使用 Webhooks 创建 Slack 警报的步骤:

第 1 步:创建一个 Slack 插件(如果您还没有,请参阅本指南)。

第 2 步:在 Slack 插件中启用传入 Webhooks 功能,以允许它在 Slack 中发布来自外部来源的警报。

第 3 步:启用 Incoming Webhooks 后,将新的 Webhook 添加到您的工作区。 选择您希望应用程序在其中发送警报的 Slack 频道。

 

第 4 步:将生成特定于您选择的频道的webhook URL。

第 5 步:生成 webhook URL 后,您可以使用 HTTP POST 请求将警报添加到 URL。 

import requests
import jsonparams = {'text': "Run ID:<run_id> \n Session Link:<session_link>" }
webhook_url= "https://hooks.slack.com/services/XxxxXxxXXx/XxxXXx/XxxxXxxxxX"
requests.post(url = webhook_url, data =json.dumps(params) )

第 6 步:应用程序会将警报发布到您选择的频道,并为其生成了 webhook URL。 警报将如下所示:

上述警报具有已完成运行的会话的 ID 及其链接。 该频道的成员可以单击链接查看会话日志和其他详细信息。

使用 Post Message Slack API 发送警报

虽然传入 Webhook 是在 Slack 中发布警报的一种简单方法,但它们的功能有限。 例如,Webhooks 允许用户广播消息,但在发布后不能修改或删除它们。 它们也不允许用户覆盖他们为其创建 Webhook URL 的初始频道首选项。

chat.postMessage 方法在功能和范围方面要先进得多。 它们使应用程序能够回复消息、在多个频道上广播相同的消息等。

 

使用 postMessage API 创建 Slack 警报的步骤:

第 1 步:创建一个 Slack 应用程序(如果您还没有,请参阅本指南)。

第 2 步:从应用管理页面转到应用设置,然后从导航菜单中选择 OAuth 和权限功能。 向下滚动到 Scopes 部分,然后从下拉菜单中选择 chat:write。 此范围将使应用程序能够代表其发送消息。

第 3 步:如果应用程序之前没有授予上述范围,您必须使用重新安装应用程序将应用程序重新安装到其原始工作区。

第 4 步:使用任何 Slack API 都需要工作区令牌。 用户首次在工作区中安装应用程序时会生成工作区令牌,并在“机器人用户 OAuth 令牌”下的应用程序设置中可用。 要使 API 正常工作,令牌需要具有正确的权限。

 

第 5 步:

  • Python 代码段需要一个参数通道来找到正确的对话。
  • 参数 text 指定警报的内容。
  • 使用来自 Slack Web 客户端的 chat.postMessage API 发布警报的 Python 片段如下:
from slack import WebClient
client = WebClient(token=<workspace_token>)
client.chat_postMessage(channel=<channel_id>, text=<alert_message>)

第 6 步:应用程序会将警报发布到您选择的频道,并为其生成了 webhook URL。 警报将如下所示:

 

第 7 步:您可以使用参数 thread_ts 将警报作为对上一条消息的回复发送。 当警报与上一条消息相关并且必须发布而不造成混淆时,此命令会派上用场。 

from slack import WebClient
client = WebClient(token=<workspace_token>)
client.chat_postMessage(channel=<channel_id>,text=<alert_message>,thread_ts= <ts_value_of_parent_message>
)

步骤 8:您可以通过为参数 thread_ts 提供父消息的 ts 值,使警报显示为对消息的线程回复。 您可以从发送父消息时获得的响应负载中获取 ts 值。

在警报中发布附件

Slack 允许用户将文件作为消息与文本消息一起上传,甚至作为对消息线程的回复。 您将图片、日志和其他工件标记为在会话运行后广播的警报。 files.upload 是用于将附件上传到 Slack 的 API 方法。

使用 files.upload API 将文件附加到 Slack 警报的步骤:
第 1 步:创建一个 Slack 应用程序(如果您还没有,请参阅本指南)。

第 2 步:从应用管理页面转到应用设置,然后从导航菜单中选择 OAuth 和权限功能。 向下滚动到 Scopes 部分,然后从下拉菜单中选择 files:write。 此范围将使应用程序能够代表其发送消息。

第 3 步:如果应用程序之前没有授予上述范围,您必须使用重新安装应用程序将应用程序重新安装到其原始工作区。

‍第 4 步:使用任何 Slack API 都需要 Workspace 令牌参数。 要使 API 正常工作,令牌需要具有正确的权限。

‍第5步:

  • Python 代码段还需要一个参数通道来找到正确的对话。 您可以使用逗号分隔的列表添加多个频道。
  • 您可以使用参数 initial_comment 来指定与警报相关的任何注释。
  • 参数 title 为附件提供了一个标题。
  • 您必须在参数文件中提及附件路径的需要。

第 6 步:从 Slack Web 客户端使用 files.upload API 上传文件的 Python 片段如下所示:

from slack import WebClient
client = WebClient(token=<workspace_token>)
client.files_upload(channels=<channel_id>,initial_comment=<alert_message>,title=<title_of_the_alert>,file=<file_path>
)

第 7 步:一些附加参数有助于在 Slack 中使用线程功能。

  • 您可以使用参数 thread_ts 将文件附加到相应的会话警报。

该应用程序会将附件发布到使用 channel 参数选择的频道,并在 initial_comment 中提供详细信息,如下所示:

Slack 通知集成代码

使用 start HeadSpin 捕获,以下 Python 代码模板展示了如何将测试与用户流关联,并设置状态(取决于自动化脚本的成功或失败)。 该代码使用 postMessage API 将包含会话链接的通知推送到 Slack。 

# -*- coding: utf-8 -*-
#!/usr/bin/python
import os
from time import sleep
import sys
import time
import unittest
import requests
from appium import webdriver
from slack import WebClientclass AutomationTests(unittest.TestCase):def setUp(self):self.package = <app_package>self.os = <os_name>self.udid = <device_udid>  #Selecting the device using device udid#Initialising desired capabilitiesdesired_caps = {}desired_caps['platformName'] = <platform_name>desired_caps['udid'] = self.udiddesired_caps['deviceName'] = self.udiddesired_caps['appPackage'] = <app_package>desired_caps['appActivity'] = <app_activity>desired_caps['headspin:capture.video'] = Trueself.status = "Fail"appium_input = <appium_url>     #Argument for appium urlself.url = appium_inputself.auth_token = appium_input.split('/')[-3]#Initialising driver to start test in required deviceself.driver = webdriver.Remote(self.url, desired_caps)def tearDown(self):self.session_id = self.driver.session_idprint ("https://ui-dev.headspin.io/sessions/" + self.session_id + "/waterfall")#Completing test and releasing the device from the driverself.driver.quit()#Setting the test statusif self.status != "Pass":session_status = "Failed"else:   session_status= "Passed"self.associate_userflow()self.update_description()#push notifications to Slack containing the session link and few data derived from the HeadSpin session capturenotification_content = "Session Link: "+ str(self.session_id) + "\n Data 1: " +str(self.data[0]) + "\n Data 2: " +str(self.data[1]) + "\n Data 3: " +str(self.data[2]) + "\n Data 4: " +str(self.data[3])workspace_token= "xoxb-123456621-1234567123-xxxxxxxxxxxxxxxxxxxxxxxx"channel_id = "XXXXXXXXXXX"client = WebClient(token=workspace_token)client.chat_postMessage(channel= channel_id, text= notification_content )def test_workflow(self):#Main script to be executed  self.driver.implicitly_wait(30)begin_button = self.driver.find_element_by_class_name('begin-btn')begin_button.click()sleep(10)data_list = self.driver.find_elements_by_class_name('data-list')for i in range(0,4):self.data[i] = data_list[i].get_attribute('text')self.status = "Pass"def associate_userflow(self):#Associate a test with a User Flow session_data = {"session_id": str(self.session_id), "status": session_status, "test_name": self.test_name, "data":[{"key":"bundle_id","value": self.package}, {"key": "status", "value": self.status},{"key":"Data_1", "value":str(self.data[0])},{"key":"Data_2","value":str(self.data[1])},{"key":"Data_3","value":str(self.data[2])},{"key":"Data_4","value":str(self.data[3])}]}api_endpoint= "https://api-dev.headspin.io/v0/perftests/upload"output = requests.post(api_endpoint, headers={'Authorization': 'Bearer {}'.format(self.auth_token)}, json=session_data)def update_description(self):#Adding description with relevant data to the sessiondescription_string = ""for data in session_data['data']:description_string += data['key'] + " : " + str(data['value']) + "\n"data_payload = {}data_payload['name'] = self.test_namedata_payload['description'] = description_stringrequest_url= 'https://api-dev.headspin.io/v0/sessions/' + self.session_id + '/description'response = requests.post(request_url, headers={'Authorization': 'Bearer {}'.format(self.auth_token)}, json=data_payload)if __name__ == '__main__':suite = unittest.TestLoader().loadTestsFromTestCase(AutomationTests)unittest.TextTestRunner(verbosity=2).run(suite)‍

总结

使用上述方法,用户可以避免手动监控会话的麻烦,而是将会话数据直接传送到他们的 Slack 通道。 他们可以在 Webhooks 的简单但受限的功能或具有更大功能的更高级 API 方法(如 chat.postMessage 和 files.upload)之间进行选择。

这篇关于通过Slack接收HeadSpin信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/848387

相关文章

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(

SpringBoot如何对密码等敏感信息进行脱敏处理

《SpringBoot如何对密码等敏感信息进行脱敏处理》这篇文章主要为大家详细介绍了SpringBoot对密码等敏感信息进行脱敏处理的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录​1. 配置文件敏感信息脱敏​​2. 日志脱敏​​3. API响应脱敏​​4. 其他注意事项​​总结

springboot实现配置文件关键信息加解密

《springboot实现配置文件关键信息加解密》在项目配置文件中常常会配置如数据库连接信息,redis连接信息等,连接密码明文配置在配置文件中会很不安全,所以本文就来聊聊如何使用springboot... 目录前言方案实践1、第一种方案2、第二种方案前言在项目配置文件中常常会配置如数据库连接信息、Red

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息