各位大神,最近使用 pytest 框架做接口自动化,但是遇到一个问题,当使用多个 conftest.py 的时候就会报如下错误,请各位大神帮忙看看:
[2020-11-02 00:02:19,100][read_data.py 36][INFO]: 加载 D:\RwglinkApiTest\config\setting.ini 文件......
Traceback (most recent call last):
File "C:\Python\Python36\lib\site-packages\_pytest\config\__init__.py", line 415, in _importconftest
return self._conftestpath2mod[conftestpath]
KeyError: local('D:\\testcase\\scenario_test\\conftest.py')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python\Python36\lib\site-packages\pymysql\connections.py", line 571, in connect
**kwargs)
File "C:\Python\Python36\lib\socket.py", line 724, in create_connection
目录结构如下图:
test case 的 package 下的 conftest.py,我做了 yaml 文件数据的读取,如下面的代码和图:
import pytest
import os
from common.read_data import data_reader
BASE_PATH = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
def get_data(yaml_file_name):
try:
data_file_path = os.path.join(BASE_PATH, "data", yaml_file_name)
yaml_data = data_reader.load_yaml(data_file_path)
except Exception as ex:
pytest.skip(str(ex))
else:
return yaml_data
base_data = get_data("base_data.yml")
api_data = get_data("api_test_data.yml")
test case 中 scenario_test 的 package 中的 conftest.py, 我引用了外层的 conftest.py 中的读取数据方法,然后做了一个@pytest.fixture(scope="session") 函数做数据的初始化和删除,如下图:
同样,test case 中 basic_func_project 的 package 中的 conftest.py, 我也引用了外层的 conftest.py 中读取的方法,然后做了一个@pytest.fixture(scope="session") 函数做数据的初始化和删除,如下图:
但是当我选中某个 test case 的方法在 pycharm 中 RUN 的时候就会报错: