代码之家  ›  专栏  ›  技术社区  ›  Dimebag

pytest中数据结构的重用

  •  2
  • Dimebag  · 技术社区  · 6 年前

    我正在开发一个相当通用的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型 在(类)中,变量似乎不能加快测试速度。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Dimebag    6 年前

    看来我对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'