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

Pytest:将一个夹具传递给另一个夹具

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

    Pytest

    import pytest
    import numpy as np
    
    @pytest.fixture()
    def arr():
      np.random.seed(141)
      return np.random.seed(141)
    
    @pytest.fixture()
    def model(arr):
      return arr * 2
    
    def test_multiplication(arr, model):
      assert model == arr * 2
    

    在这里 arr function 但是 arr() NoneType

    然而,为了使这项工作正常进行,需要将一个fixture传递给另一个fixture(这样我们就可以使用数组构建模型)。这可能吗?任何帮助别人都将不胜感激!

    1 回复  |  直到 6 年前
        1
  •  9
  •   duhaime    6 年前

    哎呀,我的示例arr()函数没有定义数组!您可以按上述方法共享装置:

    import pytest
    import numpy as np
    
    @pytest.fixture()
    def arr():
      np.random.seed(141)
      return np.random.rand(100,2)
    
    @pytest.fixture()
    def model(arr):
      return arr * 2
    
    def test_multiplication(arr, model):
      assert np.all(model == arr * 2)
    

    还可以使用各种类方法创建一个类,然后从fixture返回该类。然后,测试可以调用单个类方法或访问类属性,以访问更大的共享状态块。很不错的。