gpt4 book ai didi

python-3.x - 我什么时候应该使用 pytest --import-mode importlib

转载 作者:行者123 更新时间:2023-12-04 13:33:37 32 4
gpt4 key购买 nike

这是我的项目结构:

git_dir/
root/
__init__.py
tests/
__init__.piy
test1.py
foo_to_test/
foo.py
我用pytest测试foo.py,test1.py如下:
from foo_to_test.foo import func_to_test

def test1():
assert something about func_to_test
从终端,我想运行
pytest tests
现在的问题。
使用 --import-mode append 或 --import-mode prepend 时,它会将“git_dir”添加到 PYTHONPATH。
问题是 'git_dir' 不是项目根目录。
  • 我可以添加 sys.path.append('git_dir/root') 但名称 'git_dir' 对于在其他计算机上工作的其他程序员来说是不同的。
  • 我在 pytest 文档中看到使用 --import-mode importlib 可能会解决我的问题,但它似乎对我的 PYTHONPATH 没有任何影响,我无法理解它在做什么。

  • 所以我的问题是:
  • --import-mode importlib 在做什么?
  • 我如何在测试时自动将我的根添加到路径中,这样对于每个拉这个项目的程序员来说都是一样的?
  • 最佳答案

    这看起来很难,因为这不是它应该如何工作的。可能是时候了解包装了。
    Python 模块系统旨在在 sys.path 上查找模块。目录,如您所描述。该变量将由用户以某种方式填充,并且最好不要干预。
    当开发人员想要使用你的包时,他们必须确保它安装在他们运行测试的系统上。
    如果您想让他们更轻松,请提供例如project.toml文件;然后他们可以构建您的包,并使用 pip install /path/to/your/distribution-file.tgz 安装它.
    更多关于这里的信息:https://setuptools.readthedocs.io/en/latest/userguide/quickstart.html#python-packaging-at-a-glance .

    关于python-3.x - 我什么时候应该使用 pytest --import-mode importlib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63545606/

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