2017-06-29 14 views
0

私はプラグイン機能を提供するために継承できる基本コントラクトクラスを持っています。私はmust_override_methodsでない場合@abstracmethodは私が実行時にクラスをインスタンス化することはできませんがsetuptoolsのを使用して、新しいプラグインがPythonでプラグインクラスをテストするための一般的なunittestを書く方法

entry_points=""" 
[plugins] 
plugin1=plugins.plugin1:Plugin1 
""" 

やクラスのように見えるような何か...

class Plugin: 
    __metaclass__ = abc.ABCMeta 

    @abstractmethod 
    def must_override_method(): 
     pass 

    @abstractmethod 
    def must_override_method2(): 
     pass 


#./plugins/plugin1.py 
#Actually the plugins could be anywhere 

class Plugin1(Plugin): 

    def must_override_method(): 
     print("Hello") 

をエントリポイント追加していますまだ書かれていないプラグインの単体テストを追加するにはどうしたらいいですか?

テスト中に抽象メソッドを実装していない "プラグイン"をキャッチする簡単な一般的なテストを書く方法はありますか?

答えて

0

私は、最善の方法は、その抽象クラスのための模擬を使用することだと思います。モッキングは、実際にオブジェクトを作成したり、作成しようとしないメカニズムです。むしろ、同じプロパティを持つモックオブジェクトを作成します。同じモックモジュールを使用してください

+0

私はどのメソッドのレスポンスや実装をテストしようとしているわけではないので、この問題は解決しないと思います。私はプラグインが有効かどうかを、それらが正しくインスタンス化されるかどうかをチェックすることによってテストしようとしています。 –

関連する問題