Pytest conftest.py中的全局变量



我有一个正在运行的测试项目,我在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)

您甚至可以根据需要选择夹具的范围来执行此数据加载,请参见夹具范围。

最新更新