0

我有以下目录结构:

src/
    main/
        somecode/
            A.py
            B.py
            __init__.py
        __init__.py
    test/
        somecode/
            testA.py
            testB.py
            __init__.py
        __init__.py
    __init__.py

我能够成功地将以下内容添加到测试模块中:

import sys
sys.path.insert(0, "absolute path to src")

这使我可以从 src 文件夹运行鼻子测试。但问题是当其他人使用我的代码时,这不起作用,因为他们的绝对路径没有不同。

所以我尝试了:

import sys, os
sys.path.append(os.path.abspath('../../../main/somecode')
from main.somecode import A

这在 src/test/somecode 中效果很好,但我无法从 src 文件夹运行鼻子测试,因为相对路径从那里不起作用。

我也尝试过 from ...main.somecode import A 但它不喜欢那样,即使它们都是 python 包。

那我该怎么办? 似乎是一个潜在的答案,但他没有解释在哪里添加代码。

4

1 回答 1

1

除了使用相对路径(“../../../main/somecode”),您也可以这样做,但使用 __file__ 全局变量:

tests_dir = os.path.dirname(__file__)
sys.path.append(os.path.join(tests_dir, "..", "..", "..", "main", "somecode"))

我会将它放在“test/somecode”下的 __init__.py 文件中,而不是为每个测试模块文件添加它。

于 2013-09-29T16:24:22.003 回答