【问题标题】:Pycharm - unable to use fixutures or other resources from parent directories when running pytestPycharm - 运行 pytest 时无法使用父目录中的 fixutures 或其他资源
【发布时间】:2022-12-15 09:34:50
【问题描述】:
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 运行相同的测试时,它仍会运行测试,但无法从父目录中找到资源文件或固定装置。

它会导致 FileNotFound 或它无法找到夹具的错误。

示例 - 目录结构:

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

当从依赖于 JSON 文件的 test_service.py 运行单个测试时,它无法找到它们。

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

如果测试依赖于带有不同错误消息的夹具,则同样会发生这种情况,表明未找到夹具。

一些附加信息:

我可以请任何人对此事有所了解吗?非常感谢您的帮助。 谢谢大家的时间和精力。

【问题讨论】:

    标签: python testing path pycharm pytest


    【解决方案1】:

    你如何在代码中获取这个文件?
    看起来你正在做类似的事情:my_json = 'tests/fixtures/some_files/datafile.json'。
    我的建议是当你用 poetry 运行它时,它“知道”项目根目录在哪里并且可以毫无问题地找到文件。但是当你使用 Pycharm 运行它时,它会尝试在当前目录中找到“测试”文件夹,其中包含正在运行的代码的文件所在的位置。
    因此,为了能够从 pycharm 运行它,路径应该是绝对路径或相对于文件位置的路径。第二个选项(相对)可以同时运行 pycharm 和 poetry。

    【讨论】:

    • 谢谢你的回答我真的很感谢你的时间。我知道如果使用绝对路径它会在 pycharm 中工作但应该没有必要这样做,必须有更好的方法通过 pycharm 来做到这一点。在 VSCode 中,它可以通过终端和 IDE 正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 2021-02-08
    相关资源
    最近更新 更多