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

时间:2018-09-29 13:01:21

标签: 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

在模型内部,arr的类型为function,但是arr()的类型为NoneType

此用例是一些测试需要访问原始arr本身,而另一些测试需要访问模型的情况。

但是,要使这项工作有效,一个人需要将一个固定装置传递给另一个固定装置(因此我们可以使用数组来构建模型)。这可能吗?别人能提供的任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

糟糕,我的示例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)

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