2017-10-03 21 views
-2

ユニットテストの書き方を学んでいます。 app.py:AttributeError: 'module'オブジェクトに 'add'属性がありません

class MyClass: 
    def add(self): 
     return 2+2 

app_test.py:python -m unittest app_test.TestMyClass

import app 
import unittest 

class TestMyClass(unittest.TestCase): 
    def test_add(self): 
     self.assertEqual(app.add(), 4) 

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

コマンド実行の。

エラー:これはオブジェクトメソッドだとき

Traceback (most recent call last): 
    File "app_test.py", line 6, in test_add 
    self.assertEqual(app.add(), 4) 
AttributeError: 'module' object has no attribute 'add' 
+0

'app.py'機能を持っていない' ')(追加 – dm03514

+0

プロジェクトのディレクトリ構造を投稿しますが、そのモジュールからクラス' MyClass'は ''()メソッドを追加している、したがって、エラー – myaut

+0

ください。明らかに、あなたは 'app.py'をインポートしました。このモジュールは本当に' add'属性を持っていません。 'app app import MyClass'のようなものを書いて、' self.assertEqual(MyClass.add()、4) 'をテストするとよいでしょう。 – zezollo

答えて

1

あなたのテストは、直接add()を呼んでいます。最初にオブジェクトを作成します。これはうまくいくはずです。

from app import MyClass 
import unittest 

class TestMyClass(unittest.TestCase): 
    def test_add(self): 
     o = MyClass() 
     self.assertEqual(o.add(), 4) 
関連する問題