1

私は C++ のバックグラウンドを持っており、Python の知識は非常に限られています。次の状況で助けが必要です。

バックグラウンド:

SF大規模なシステムに統合されたソフトウェアがありますS。このシステムは、テスト フレームワークとしてSpythonを使用します (微調整されています)。unittest2具体的には、および別のカスタマイズされた例外処理クラスAを継承する クラス を実装します。すべてのテストは、に基づいて実装されます。システムは Linux でのみ使用できます。ただし、このソフトウェアはスタンドアロン アプリケーションとしても使用されます。これは、他のプラットフォームでテストする場合にのみ使用する必要があり、その場合、クラスは使用できません。 unittest2BASSFunittest2A

質問:
異なるプラットフォームに異なるテスト パッケージを適用するにはどうすればよいですか?

私の考えられる解決策:
このスレッドに基づいてラッパー クラスを実装することを考えています: 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 参考までに使用しています。

どんな意見でも大歓迎です。自分自身を明確にするのに役立つ場合は、喜んで追加情報を追加します。ありがとうございました。

4

0 に答える 0