是否可以将生成的 pytest 固定装置(用于设置和拆卸)作为参数传递给测试函数?
我正在测试一个在单个目录中的文件中读取和写入数据的对象。该目录的路径保存为对象的属性。
我遇到以下问题:
考虑以下内容(test_yieldfixtures.py):
import pytest, tempfile, os, shutil
from contextlib import contextmanager
@contextmanager
def data():
datadir = tempfile.mkdtemp() # setup
yield datadir
shutil.rmtree(datadir) # teardown
class Thing:
def __init__(self, datadir, errorfile):
self.datadir = datadir
self.errorfile = errorfile
@pytest.fixture
def thing1():
with data() as datadir:
errorfile = os.path.join(datadir, 'testlog1.log')
yield Thing(datadir=datadir, errorfile=errorfile)
@pytest.fixture
def thing2():
with data() as datadir:
errorfile = os.path.join(datadir, 'testlog2.log')
yield Thing(datadir=datadir, errorfile=errorfile)
@pytest.mark.parametrize('thing', [thing1, thing2])
def test_attr(thing):
print(thing.datadir)
assert …Run Code Online (Sandbox Code Playgroud)