2016-07-06 2 views
0

私が働いて、サンプル・アプリケーションのためのテストファイルを試してみて、入手するのpython3を使用しています、まだそれはImportError: No module named 'calculate'のpython3テストのインポートエラー

私のファイル構造を投げ続けるには、次のとおりです。

/calculate 
    __init__.py 
    calculate.py 
    test/ 
    __init__.py 
    calculate_test.py 

これは、なぜ私が把握することはできませんその場合は、どんな助けでも大歓迎です。

__init__.pyファイルは空です。

calculate.pyは含まれています

class Calculate(object): 
    def add(self, x, y): 
     return x + y 

if __name__ == '__main__': 
    calc = Calculate() 
    result = calc.add(2, 2) 
    print(result) 

calculate_test.pyは含まれています

import unittest 
from calculate import Calculate 

class TestCalculate(unittest.TestCase): 
    def setUp(self): 
     self.calc = Calculate() 

    def test_add_method_returns_correct_result(self): 
     self.assertEqual(4, self.calc.add(2,2)) 

if __name__ == '__main__': 
    unittest.main() 

私はルート/calculateフォルダからpython test/calculate_test.pyを実行しているとエラーに

Traceback (most recent call last): 
    File "test/calculate_test.py", line 2, in <module> 
    from calculate import Calculate 
ImportError: No module named 'calculate' 
を取得しています

私はさまざまな構造を抱いていて、問題の内容を理解できません。

+0

のようなものにcalculate_test.pyで輸入署名を変更するにはあなたが必要になります多分これが役立ちます

./project/ calculate_test.py calculate/ __init__.py calculate.py 

この構造体を使用します。http://stackoverflow.com/questions/4142151/python-how-to-the-same-directory-or-sub-directory内のクラスをインポートする –

答えて

0

あなたのプロジェクトの構造が理由です。テストスクリプトには、起動時に検索パスに外部ディレクトリがありません。

  1. テストファイルを、インポートするモジュールを含む同じディレクトリに移動します。それはテストファイルに変更を必要としません。
  2. これはfrom calculate import calculate

+0

'self.calc =を定義するときに' name Calculate is not defined ' SetupメソッドでCalculate()を実行します。 – SJC

+0

calculate_test.pyはcalculate/calculate.pyからCalculateにアクセスする必要がありますので、 "calculate.calculate import calculate"が必要です –

+0

パッケージ階層内でテストを行う方が良いと思います –

関連する問題