You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyCharm运行pytest无法加载父目录fixture及资源文件问题求助

环境信息

Pycharm version: 2022.2.3 (Professional Edition)
Framework: FastAPI
Tests: pytest 6.1.0
OS: macOS Monterey 12.4

试过相关讨论的解决方案均无效,推测是配置不当导致问题。

问题描述

FastAPI项目在终端执行以下命令可正常运行测试:

poetry run dotenv run poetry run pytest tests -k name_of_some_test_method -v -s

但在PyCharm中运行相同测试时,虽能执行测试,却无法找到父目录下的资源文件或fixture,触发FileNotFoundError或找不到fixture的错误。

目录结构示例

My_Project
  - App_code - sources root
     - admin
     - api 
     - auth
     - ....
  - tests
     - fixtures 
         - some_files
             - JSON files
             - datafile.json
         - some_fixtures.py
         - ...
     - unit
         - services
            - test_service.py

从test_service.py运行依赖JSON文件的测试时,报错如下:

FileNotFoundError: [Errno 2] No such file or directory: 'tests/fixtures/some_files/datafile.json'

依赖fixture的测试同样出现找不到fixture的错误。

补充信息

Setting pytest


解决方法

1. 调整PyCharm测试工作目录

PyCharm默认会将测试文件所在目录设为工作目录,和终端以项目根目录运行的逻辑冲突,导致路径错误:

  • 点击右上角运行按钮旁的下拉框,选择「Edit Configurations」
  • 找到对应的pytest配置项,在Working directory中选择项目根目录My_Project
  • 保存配置后重新运行测试

2. 配置fixture扫描路径

找不到fixture是因为PyCharm未识别到fixture所在目录:

  • 打开PyCharm设置(Preferences → Tools → Python Integrated Tools),确认默认测试 runner为pytest
  • 右键点击tests/fixtures目录,选择「Mark Directory as」→「Test Sources Root」
  • 或者在pytest配置的Additional Arguments中添加--rootdir=My_Project,强制pytest从项目根目录扫描fixture

3. 改用绝对路径获取资源(可选)

避免路径依赖工作目录,在测试代码中用绝对路径拼接资源文件:

import os

# 获取项目根目录
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# 拼接资源文件路径
data_file = os.path.join(PROJECT_ROOT, "tests", "fixtures", "some_files", "datafile.json")

4. 同步Poetry虚拟环境到PyCharm

确保PyCharm使用的是项目的Poetry虚拟环境:

  • 打开Preferences → Project: My_Project → Python Interpreter
  • 点击齿轮图标选择「Add」→「Poetry Environment」→「Existing environment」,找到Poetry创建的虚拟环境路径
  • 应用设置后重新运行测试

内容的提问来源于stack exchange,提问作者ChronicUser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:25:15