私は C++ のバックグラウンドを持っており、Python の知識は非常に限られています。次の状況で助けが必要です。
バックグラウンド:
SF
大規模なシステムに統合されたソフトウェアがありますS
。このシステムは、テスト フレームワークとしてS
pythonを使用します (微調整されています)。unittest2
具体的には、および別のカスタマイズされた例外処理クラスA
を継承する クラス を実装します。すべてのテストは、に基づいて実装されます。システムは Linux でのみ使用できます。ただし、このソフトウェアはスタンドアロン アプリケーションとしても使用されます。これは、他のプラットフォームでテストする場合にのみ使用する必要があり、その場合、クラスは使用できません。unittest2
B
A
S
SF
unittest2
A
質問:
異なるプラットフォームに異なるテスト パッケージを適用するにはどうすればよいですか?
私の考えられる解決策:
このスレッドに基づいてラッパー クラスを実装することを考えています: Create a wrapper class to call a pre and post function around existing functions? . その投稿からの回答を以下に示します。
class Wrapper(object):
def __init__(self,wrapped_class):
self.wrapped_class = wrapped_class()
def __getattr__(self,attr):
orig_attr = self.wrapped_class.__getattribute__(attr)
if callable(orig_attr):
def hooked(*args, **kwargs):
self.pre()
result = orig_attr(*args, **kwargs)
# prevent wrapped_class from becoming unwrapped
if result == self.wrapped_class:
return self
self.post()
return result
return hooked
else:
return orig_attr
ただし、クラスのメンバー関数のラッパーを扱っているため、上記のスレッドはあまり関係がないと思いますが、さまざまなテスト パッケージをラップするラッパー クラスが必要です。Pythonでこれを行うことは可能ですか? Python 2.7 参考までに使用しています。
どんな意見でも大歓迎です。自分自身を明確にするのに役立つ場合は、喜んで追加情報を追加します。ありがとうございました。