gpt4 book ai didi

python - pytest的文件夹结构和导入问题

转载 作者:行者123 更新时间:2023-12-04 15:53:49 27 4
gpt4 key购买 nike

想象一个简单的文件夹结构:

my_folder/
__init__.py
funcs.py
tests/
test_funcs.py

funcs.py:
def f():
return 2

__init__.py:
from funcs import f

test_funcs.py:
from funcs import f

def test_f():
assert f() == 2

这是文档中建议的方法之一:
https://pytest.readthedocs.io/en/reorganize-docs/new-docs/user/directory_structure.html

但是当我从 my_folder 运行 pytest 时:
tests/test_funcs.py:1: in <module>
from funcs import f
E ModuleNotFoundError: No module named 'funcs'

这很奇怪,因为我会认为 pytest设置它运行的路径,这样在不手动处理的情况下不会出现这些类型的错误。

文档也没有给出任何关于这一点的迹象......他们只是说:

Typically you can run tests by pointing to test directories or modules:

pytest tests/test_appmodule.py      # for external test dirs
pytest src/tests/test_appmodule.py # for inlined test dirs
pytest src # run tests in all below test directories
pytest # run all tests below current dir


我错过了什么?

最佳答案

这是一个非常简单的方法:

  • 清空 __init__.py
  • 从高于 my_folder运行 python -m pytestpython -m pytest tests (但不是 pytest)

  • 说明:使用 -m 运行模块选项会将其包含在 PYTHONPATH 中,所以所有与import语句相关的事情都会顺利解决。

    关于python - pytest的文件夹结构和导入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52747763/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com