使用 golang prometheus testutil 进行单元测试

2023-12-30

我们可以断言使用以下方法注册和收集指标testutil.CollectAndCount and testutil.CollectAndCompare等等。但是有没有办法通过指标名称和标签来收集指标(如果是)CounterVec.

以供参考https://godoc.org/github.com/prometheus/client_golang/prometheus/testutil https://godoc.org/github.com/prometheus/client_golang/prometheus/testutil


据我了解您的问题,您想要使用 CounterVec 等指标集合中的特定标签来测试指标的值。

您可以通过使用ToFloat64功能结合WithLabelsValue函数,如下例所示:

import (
    "testing"

    "github.com/prometheus/client_golang/prometheus"
    "github.com/prometheus/client_golang/prometheus/testutil"
    "github.com/stretchr/testify/assert"
)

func TestVecMetricT(t *testing.T) {
    assert := assert.New(t)

    var C = prometheus.NewCounterVec(prometheus.CounterOpts{
        Name: "C",
        Help: "Help",
    }, []string{"subname"},
    )

    prometheus.MustRegister(C)

    C.WithLabelValues("firstLabel").Inc()
    C.WithLabelValues("secondLabel").Inc()
    C.WithLabelValues("thirdLabel").Inc()
    C.WithLabelValues("thirdLabel").Inc()

    // collected three metrics
    assert.Equal(3, testutil.CollectAndCount(C))
    // check the expected values using the ToFloat64 function
    assert.Equal(float64(1), testutil.ToFloat64(C.WithLabelValues("firstLabel")))
    assert.Equal(float64(1), testutil.ToFloat64(C.WithLabelValues("secondLabel")))
    assert.Equal(float64(2), testutil.ToFloat64(C.WithLabelValues("thirdLabel")))
}

如果我错了,请纠正我,但我不认为有办法使用testutil包以从 CounterVec 等指标集合中获取标签值切片。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 golang prometheus testutil 进行单元测试 的相关文章

  • 如何解析 Content-Disposition 标头以检索文件名属性?

    使用 go 如何解析从 http HEAD 请求检索到的 Content Disposition 标头以获取文件的文件名 此外 如何从 http HEAD 响应中检索标头本身 这样的事情正确吗 resp err http Head http
  • 如何通过 NUnit 有效地对使用 ADO.NET 和 SQL Server 的 DAL 进行单元测试?

    因此 您在 C 中有一个使用存储库模式的 DAL 并且每个存储库都有一个接口 它由 ADO NET MS SQL Server 和存储过程调用支持 这对于在进行单元测试时对正在其他地方使用的存储库进行存根 模拟非常有用 我喜欢它 不过 我很
  • C# 模拟接口与模拟类

    我是 net 中的最小起订量框架的新手 根据我的在线研究 似乎有两种方法可以使用这个框架 要么模拟接口 要么模拟具体类 似乎在嘲笑具体类时 只有virtual方法可以被嘲笑 就我而言 我只想模拟实现接口的类的几个方法 例如 如果我们有以下内
  • Scala 的代码覆盖率工具 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 Laravel 中基于 application/json 标头加载路由

    我正在使用application json标头来控制我的控制器在收到请求时的行为 我需要在单元测试中的 POST 中包含application json header 我试过了 public function testStore this
  • 如何测试包含自定义表单控件的组件?

    我有一个这样的组件 Component selector app custom form control templateUrl
  • Grails - 如何对 addTo* 进行单元测试

    是否可以在 Grails 中对 addTo 函数进行单元测试 感谢您的帮助 文档第 9 1 节中说 http grails org doc latest guide 9 20Testing html 9 1 20Unit 20Testing
  • 如何将UTC时间转换为unix时间戳

    我正在寻找将 UTC 时间字符串转换为 unix 时间戳的选项 我的字符串变量是02 28 2016 10 03 46 PM并且需要将其转换为 unix 时间戳 例如1456693426 知道该怎么做吗 首先 unix时间戳14566934
  • 匿名结构和空结构

    http play golang org p vhaKi5uVmm http play golang org p vhaKi5uVmm package main import fmt var battle make chan string
  • Spring @ContextConfiguration

    我正在运行下一个测试 import static org junit Assert assertEquals import org junit Test import org junit runner RunWith import org
  • 如何用 Jest 模拟 Sequelize?

    我正在尝试为调用 Sequelize 来创建数据库的代码编写单元测试 我一生都无法弄清楚如何模拟对 Sequelize 的调用 以便我可以断言他们已经正确创建了数据库表 我点击 Sequelize 的代码如下 import Sequeliz
  • 模板中的 bson.ObjectId

    我有一个具有 bson ObjectId 类型的结构 例如如下所示 type Test struct Id bson ObjectId Name string Foo string 我想在 html 模板中呈现它 Name Food a h
  • 如何检查带有通配符的模拟调用?

    我正在编写单元测试 并且想要检查具有函数对象的调用 如下所示 call u mock u foobar
  • 使用 Moq 测试接受委托的方法

    我的代码正在使用一个实现这样的接口的组件 public interface IFoo void DoSomething string p1 void DoSomething string p1 Action
  • 测试 Python 脚本

    如何使用 doctest unittest nose 等测试框架测试 Python 脚本的 STDOUT 输出 例如 假设运行我的脚本 todo py list 应该返回 取出垃圾 我读过有人将脚本的 STDOUT 打印部分与生成要打印的输
  • 如何测试某些代码在 C++ 中无法编译? [复制]

    这个问题在这里已经有答案了 可能的重复 单元测试编译时错误 https stackoverflow com questions 605915 unit test compile time error 我想知道是否可以编写一种单元测试来验证给
  • 单元测试类是否应该与其余代码一起置于版本控制之下?

    如果我为开发项目创建测试套件 这些类是否应该与项目代码的其余部分一起受版本控制 是的 没有理由不将它们置于源代码管理中 如果测试发生变化怎么办 如果接口发生变化 需要测试更改怎么办
  • GOMAXPROCS 默认值是多少?

    不设置同名环境变量时是否保证GOMAXPROCS设置为1 此代码显示的值 package main import runtime fmt func getGOMAXPROCS int return runtime GOMAXPROCS 0
  • 如何将 int[] 转换为 uint8[]

    所以 我需要你的帮助 我找不到关于该主题的任何内容 Golang 是一门刚刚诞生的语言 所以对于像我这样的新手来说很难快速找到答案 预先声明的 Goint类型大小是特定于实现的 32 位或 64 位 数字类型 http golang org
  • 单元测试失败,异常代码为 c0000005

    我正在尝试使用本机单元测试项目在 Visual Studios 2012 中创建单元测试 这是我的测试 TEST METHOD CalculationsRoundTests int result Calculations Round 1 0

随机推荐

  • 在 python 3 中重新使用 zip 迭代器[重复]

    这个问题在这里已经有答案了 我有zip object L RANGES zip range 10 20 range 11 21 第一次致电L RANGES is ok print type L RANGES for a b in L RAN
  • Jquery 的好通知插件吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在看 pine 通知 http pines sourceforge net pnotify htt
  • 减少 Matplotlib 面积图中的 x 轴条目

    我想要具有重叠曲线的非堆叠面积图 这些曲线在某种意义上是透明的 您可以看到两条曲线 类似于在 python pandas 数据框中使用精确颜色重叠透明区域的自定义图例 stacked false https stackoverflow co
  • 使用jquery加载头像

    只是想在博客上创建一个简单的评论表单 当用户在电子邮件框中写入此内容时 我想加载用户的头像 使用 jQuery 我怎样才能做到这一点 头像网址如下所示 http www gravatar com avatar
  • 如何通过 Swift 4 的 Decodable 协议使用自定义键?

    Swift 4 通过以下方式引入了对本机 JSON 编码和解码的支持Decodable https developer apple com documentation swift decodable协议 我如何为此使用自定义键 例如 假设我
  • 如何使用链接中的图像创建 UIImageView?

    如何使用来自这样的链接的图像创建 UIImageViewhttp img abc com noPhoto4530 gif http img abc com noPhoto4530 gif NSURL url NSURL URLWithStr
  • ViewModel 和单例模式

    我有一个ViewModel用于枚举处理 实体框架中的少数实体 1 从哲学上讲 为此 ViewModel 使用单例模式是一个很好的实践 因为它广泛应用于所有应用程序并且在很多地方使用 2 这对于ViewModel 以及相关的ObjectCon
  • 如何使用Keras的Tensorboard回调?

    我用 Keras 构建了一个神经网络 我会通过 Tensorboard 可视化其数据 因此我使用了 keras callbacks TensorBoard log dir Graph histogram freq 0 write graph
  • 我们可以通过保持会话最小化来在远程计算机上执行 QTP 脚本吗

    我有几台机器 我希望在上面安排执行 我需要远程访问这些机器才能执行 每当我从这些机器开始执行并最小化会话时 我的脚本都会失败 所以只是想知道 QTP 脚本是否可以在保持会话最小化的同时执行 如果是 需要在脚本中进行哪些更改 谢谢 当您最小化
  • 升级到 1.4 后 Tensorboard 错误:在解析标志之前尝试访问标志

    自从升级到 TF 1 4 后 当我尝试运行时出现此错误tensorboard Traceback most recent call last File opt python 3 6 3 bin tensorboard line 11 in
  • 如何在 Next.js 中使用未知宽度和高度的图像组件

    从版本 10 开始 Next js 内置了Image组件提供图像优化和响应式调整图像大小的功能 我非常喜欢它 并且我一直在我的网站上使用它来处理固定尺寸的图像 根据官方文档 宽度和高度是必需的道具 除非它是为了layout fill 现在
  • Codeigniter - 如何从ajax获取数据表数据?

    我正在开发一个基于 CodeIgniter 的应用程序 这里是代码 控制器 public function index data array record gt this gt Parameter model gt get paramete
  • 在 Apple M1 芯片上运行 Apache Flink 1.12 作业

    我刚刚尝试运行Apache Flink 的基本示例 https ci apache org projects flink flink docs release 1 12 try flink local installation html在配
  • 在不使用默认 ID 生成策略时,如何加载受限于集合的 RavenDB 文档

    在 RavenDB 4 v4 0 3 patch 40031 中 我有两种文档类型 Apple and Orange 两者具有相似但又不同的属性 我在运行时遇到代码中的一个错误 有时会提供 Apple 的 ID 但会返回 Orange 可怕
  • 需要命令行使用 adb 启动网络浏览器

    我怎样才能启动浏览器adb shell命令并使其打开某个网页 运行此命令将在 Android 中启动 Web 浏览器 adb shell am start a android intent action VIEW d http www st
  • Linux 中除零异常处理

    我很想了解 Linux 中除零异常处理 当执行除以零运算时 会生成陷阱 即INT0被发送到处理器并最终SIGFPE信号被发送到执行该操作的进程 正如我所看到的 除以零异常被注册在trap init 充当 set trap gate 0 di
  • 最小 tkSimpleDialog 示例中的错误

    我正在尝试一个Python代码示例罗塞塔代码 http rosettacode org wiki User input Graphical Python a 编程学 http en wikipedia org wiki Chrestomat
  • PHP+MySQL 中的 IP 黑名单

    我一直在尝试在 PHP 中实现一种 IP 黑名单 其中我将失败的登录尝试存储到具有以下架构的 MySQL 表中 CREATE TABLE blacklist ip address VARCHAR 35 NOT NULL failures I
  • extjs的安全问题[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我怎样才能让我的客户相信 extjs 可以安全使用 或者 更好的是 我如何确保我的编程在 extjs 3 x 中是安全的 以便数据不会落入坏人之
  • 使用 golang prometheus testutil 进行单元测试

    我们可以断言使用以下方法注册和收集指标testutil CollectAndCount and testutil CollectAndCompare等等 但是有没有办法通过指标名称和标签来收集指标 如果是 CounterVec 以供参考ht