gpt4 book ai didi

unit-testing - 使用 golang prometheus testutil 进行单元测试

转载 作者:行者123 更新时间:2023-12-04 08:54:35 48 4
gpt4 key购买 nike

我们可以断言使用 testutil.CollectAndCount 注册和收集了一个指标。和 testutil.CollectAndCompare等等 但是有没有办法通过指标名称和标签收集指标(如果它是 CounterVec) .
以供引用
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 等指标集合中获取一部分标签值。

关于unit-testing - 使用 golang prometheus testutil 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63911468/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com