Pytest:将一个装置传递给另一个

duh*_*ime 8 python unit-testing pytest

是否可以在Pytest 中将一个夹具对象传递给另一个?例如,假设我想要两个夹具对象:一个是 numpy 数组,另一个是该数组的某个模型:

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
Run Code Online (Sandbox Code Playgroud)

这里arr是一个类型function,但是arr()NoneType内部模型,它confuseth我。

这个用例是一些测试需要访问原始数据arr本身,而其他测试需要访问模型的情况。

然而,要实现这一点,需要将一个夹具传递给另一个(因此我们可以使用数组构建模型)。这可能吗?其他人可以提供的任何帮助将不胜感激!

duh*_*ime 9

糟糕,我的示例 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)
Run Code Online (Sandbox Code Playgroud)

还可以使用各种类方法创建一个类,然后从夹具中返回该类。然后测试可以调用单独的类方法或访问类属性来访问更大的共享状态块。非常好。