-1

私のプロジェクト階層は次のようになります

project 
       src
          fruit_pkg
            count_fruits.py
       test
          fruit_pkg
             test_count_fruits.py

ここで、モジュール内に。count_fruits.pyという関数があるとしadditionます。テストするには、を使用してモジュールをadditionインポートする必要がありますか?count_fruits

my_mod = __import__("fruit_pkg.count_fruits")
cnt_fruit = getattr(my_mod,"count_fruits")

そして私のテストのために次のようなことをします

def my_test(self):
  #some work happen here
  cnt_fruit.addition(blah, blah)
  #more work happen here

または:srctestコードの両方が同じパッケージfruit_pkgに含まれているため、内の関数にアクセスするためのより簡単な方法はありますかcount_fruits

並列の場合、Javaでは、srcとjunitの両方のテストコードが同じパッケージ内にある場合、インポートはまったく必要ありません。

4

4 に答える 4

1

テストコードと製品コードは異なるモジュールにあるため、モジュールをインポートする必要があります (モジュールまたは他のモジュールの名前空間にあるその内容への参照を取得する方法です)。あなたと同じくらい複雑な方法でそれを行うこと。あなたはただできる:

from fruit_pkg.count_fruits import count_fruits as cnt_fruit

繰り返しになりますが、プロジェクトの構造が複雑すぎるようです。Python は一般に、Java よりもフラットな組織を好むため、メソッドをモジュールに count_fruits直接配置するだけで、まったく配置しない方が理にかなっている可能性が高くなります。これにより、プロジェクトのナビゲートが少し簡単になり、インポートステートメントの冗長性も削除されます。fruit_modfruit_pkg

from fruit_mod import count_fruits
于 2013-01-28T16:06:09.370 に答える
0

fruit_pkg名前空間パッケージでない限り。1 つのディレクトリからのみ使用できます。を見て、sys.modules['fruit_pkg']どちらかを見つけてください。

テストをパッケージに移動するsrc/fruit_pkg/test/test_count_fruits.pyか、同じ最上位の名前を使用しないでパッケージをテストすることができます。

どちらの方法でも、モジュールをインポートするには:

from fruit_pkg import count_fruits
于 2013-01-28T16:12:22.807 に答える