各位大神,最近使用 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 的时候就会报错:


↙↙↙阅读原文可查看相关链接,并与作者交流