我正在研究一种相当通用的Python数据结构,同时为每一个功能编写测试。大多数测试会重新实例化相同的结构,即具有相同的值,以便可以测试特定的方法。例如:
class T():
def __init__(self, data):
self.data = data
def min(self):
return 'min'
def max(self):
return 'max'
class TestT():
def test_min():
t = T(values)
assert t.min() == 'min'
def test_max():
t = T(values)
assert t.max() == 'max'
重用此t
实例的正确方法是什么?我才刚刚开始,测试开始花费太长时间才能执行。我想加快速度。
注意:我知道在这个特定示例中,我可以parametrize
和getattr
,但是它仍将实例化t
两次,每次测试一次。
我看着pytest.fixtures,但似乎使灯具返回此t
只会做同样的事情,重新实例化它。
Pytest cache似乎是为此目的而制作的,但我从文档中不了解如何使用它(示例中的request
是什么?)。
最后,仅将t
存储在(类)变量中似乎并不能加快测试速度。
答案 0 :(得分:1)
似乎我对pytest固定装置的理解不完整。以下工作正常:
class Test():
@pytest.fixture(scope='class')
def data(self):
return ...
def test_min(data):
assert data.min() == 'min'
def test_max(data):
assert data.max() == 'max'