Python 我所有的测试函数都在加载conftest.py中的fixture,即使它们没有';我不需要它

Python 我所有的测试函数都在加载conftest.py中的fixture,即使它们没有';我不需要它,python,pytest,fixtures,Python,Pytest,Fixtures,我的conftest.py中有2个不同的测试文件和一些装置: 1) 包含此函数的“Test_dummy.py”: def test_nothing(): 返回1 2) “Test_file.py”。其中包含此功能: def测试运行(excelvalization\u io): dfInput,expectedOutput=excelvalidation\u io 输出=运行(dfInput) 对于键,expectedOutput.items()中的df: 预期值=df.fillna(0) re

我的conftest.py中有2个不同的测试文件和一些装置:

1) 包含此函数的“Test_dummy.py”:

def test_nothing():
返回1
2) “Test_file.py”。其中包含此功能:

def测试运行(excelvalization\u io):
dfInput,expectedOutput=excelvalidation\u io
输出=运行(dfInput)
对于键,expectedOutput.items()中的df:
预期值=df.fillna(0)
real=输出[key].fillna(0)
断言应为。等于(实)
3) “conftest.py”包含以下装置:

def pytest\u generate\u测试(metafunc):
inputfiles=glob.glob(DATADIR+“**\u input.csv”,recursive=False)
iofiles=[(ifile,getoutput(ifile)),用于中的ifile
输入文件]
元函数参数化(“csvio”,iofiles)
@pytest.fixture
def EXCEL验证io(csvio):
dfInput,expectedOutput=csvio
返回(数据输入、预期输出)
@pytest.fixture
def client():
client=app.test\u client()
返回客户端
当我运行测试时,“Test_dummy.py”还会尝试加载“excelvalidation_io”装置,它会生成错误:

在test_nothing中:函数不使用参数'csvio'

我尝试将夹具放在“Test_file.py”中,问题得到了解决,但我了解到在conftest文件中定位所有夹具是一种很好的做法。

函数pytest_generate_tests是一个特殊函数,在执行任何测试之前都会调用它,因此,在本例中,您需要检查
metafunc
是否接受名为“csvio”的参数,而不执行其他操作,如:

def pytest\u generate\u测试(metafunc):
如果metafunc.fixturenames中的“excelvalidation\u io”:
inputfiles=glob.glob(DATADIR+“**\u input.csv”,recursive=False)
iofiles=[(ifile,getoutput(ifile)),用于中的ifile
输入文件]
元函数参数化(“csvio”,iofiles)

但是每次测试都要加载是
conftest.py
的目的,不是吗?将您的固定装置移到其他位置。可能重复