python - 每次单元测试后重置 Prometheus lib 的 CollectorRegistry

标签 python unit-testing prometheus

我有一个 A 类,它在其 init 中初始化一个计数器

from prometheus_client import Counter
class A:
    def __init__(self):
        self.my_counter = Counter('an_awesome_counter')
    def method_1(self):
        return 1
    def method_2(self):
        return 2

然后我编写测试类:

import unittest
import A

class ATests(unittest.TestCase):
    def setUp(self):
        self.a = A()
    def tearDown(self):
        self.a = None
    def method_1_test(self):
        ....
    def method_2_test(self):
        ....

事实是,如果我单独运行测试,它们就很好。然而,当我一起运行它们(运行整个 ATests 类)时,出现错误:

ValueError: Duplicated timeseries in CollectorRegistry: {'an_awesome_counter'}

看来每次测试运行后 python 环境都没有重置。我检查了 CollectorRegistry,有一个方法可以取消注册收集器,但这样做似乎有点难看。

请问有没有其他方法可以解决这个问题?例如,就像强制测试每次都在新环境中运行一样。

谢谢。

最佳答案

目前,我将 a = A() 从 setup(self) 中移出,并将其转换为类变量作为解决方案

关于python - 每次单元测试后重置 Prometheus lib 的 CollectorRegistry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57095978/

相关文章:

java - 当方法位于基类内部并且测试方法类扩展它时,如何在 JUnit 中模拟方法调用?

c# - 如何模拟 JsonReader 单元测试自定义 JsonConverter

docker - Prometheus的AlertManager中的CrashLoopBackOff

kubernetes - 使用具有外部 IP 地址的普罗米修斯

python - 如何用包含训练数据的矩阵替换输入数据

python - 如何更改 pinax(0.9a2) 模板?

python - 为图像中的每个像素添加值以调整颜色。 python 3

php - yii phpunit 测试覆盖率 View

docker - 如何监控队列)并将数据从 Nifi 发送到 prometheus?

python - 如何将 pandas 中的数据框组合在一起?