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

时间:2019-07-18 13:43:35

标签: python unit-testing prometheus

我有一个A类,可以在其 init

中初始化Counter
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:CollectorRegistry中的时间序列重复:   {'an_awesome_counter'}

因此,似乎每次测试运行后都不会重置python环境。我检查了CollectorRegistry,并且有一种注销收集器的方法,但是这样做似乎有点丑陋。

我想知道是否还有另一种方法可以解决此问题?例如,每次都迫使测试在新环境中运行。

谢谢。

1 个答案:

答案 0 :(得分:0)

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