是否可以在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
本身,而另一些测试需要访问模型的情况。
但是,要使这项工作有效,一个人需要将一个固定装置传递给另一个固定装置(因此我们可以使用数组来构建模型)。这可能吗?别人能提供的任何帮助将不胜感激!
答案 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)
还可以使用各种类方法创建一个类,然后从固定装置返回该类。然后,测试可以调用单个类方法或访问类属性以访问更大的共享状态块。很好。