2016-03-21 3 views
-1

私はクラスの各メソッドを別のモジュールからテストしようとしています。ここにクラスがあります。Pythonでクラスの外部からクラスメソッドをテストするには?

#newmodule 

class test: 
    def atest(a,b): 
     return a 

    def btest(a,b): 
     return b 

およびその他のモジュールでは、私がしようとしています:

import unittest 
import newmodule 
test.atest(5,4).assert not errors 
test.atest(7,9).assert not errors 

注:私は、エラーのすべての種類がここにあると確信しているが、私は一例として、これを嘲笑。私がここに持っている主な質問は、newmoduleを正常にインポートして各メソッドをテストする方法です。私は、単にテスト機能とは対照的に、クラスの外からメソッドをテストしようとすると合併症があると思う。

私は取得していますので、私はすでに、右のバット失敗しています:

ImportError: no module named newmodule 

彼らは同じディレクトリにあるにもかかわらず。

このモジュールを正常にインポートするにはどうすればいいですか?その場合、クラス外からメソッドをテストできますか?

+0

「newmodule」ではなく、「newmodule.py'」という名前にする必要があります。また、メソッドは 'self'引数をとり、' @ classmethod'を持ち、 'cls'引数を取るか、' @ staticmethod'デコレータを持っていなければなりません。 – zondo

答えて

0

"同じディレクトリにあるにもかかわらず" - それらが同じディレクトリにあるかどうか、それはnewmoduleが現在の作業ディレクトリにあるかどうか。あなたが別のディレクトリからテストを実行したい場合は、それはあなたの目標に合うかどうかを決定する必要がありますので、あなたは、テストのテストを行っている、あなたのモジュールのバージョンsys.path

import os 
import sys 
sys.path.insert(0, os.path.dirname(__file__)) 
import unittest 
import newmodule 

このハードコードにスクリプトのディレクトリを追加することができます。あるいは、柔軟性を高めるために、テストスクリプトの外側にPYTHONPATHエンバイロメント変数を設定することもできます。

関連する問題