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フォルダーからnosetestsを実行できました。しかし、問題は、他の人が私のコードを使用するときです。絶対パスが異なるため、これは機能しません。

それで、私は試しました:

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

これは src/test/somecode からうまく機能しましたが、src フォルダーからは相対パスが機能しないため、nosetests を実行できません。

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 に答える