我有一个 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/