我有一个正在运行的测试项目,我在conftest.py
中加载了数据,并能够在该目录中的所有测试中使用该数据。由于某种原因,它停止了工作。
conftest.py
:
def pytest_configure(config):
global test_data
test_data = pd.read_excel("file.xlsx", index_col=None, sheet_name='Sheet1')
test_temp1.py
:
from conftest import *
def input_data():
print(test_data)
Error:
E NameError: name 'test_data' is not defined
我曾尝试在pytest_configure()
之外声明变量,但在pytest_configure
中初始化的值仅在函数内部具有作用域。不确定是否有任何最近的更新可能导致了这种情况。有什么更清洁的方法的想法或建议吗?
也许变化来自于这种贬低。您可以在pytest的命名空间中定义某种全局变量。
## conftest.py
def pytest_configure(config):
pytest.test_data = pd.read_excel("file.xlsx", index_col=None, sheet_name='Sheet1')
## test file
from pytest import test_data
def test_input_data():
print(test_data)
注:固定装置的使用
如果可以执行一些重构,那么处理Pytest中加载的数据的方法称为fixture。因此,您可以将测试数据定义为fixture,并在测试中使用(请求它(。
import pytest
@pytest.fixture
def test_data():
return pd.read_excel("file.xlsx", index_col=None, sheet_name='Sheet1')
def test_input_data(test_data):
print(test_data)
您甚至可以根据需要选择夹具的范围来执行此数据加载,请参见夹具范围。