5

かなり小さな質問: クラスが標準の Python データ構造インターフェイス (リスト、セット、辞書、キューなど) の 1 つに準拠しているかどうかをチェックするだけの Python 単体テストの既製のスイートについて知っている人はいますか? それらを書くのはそれほど難しいことではありませんが、誰かがすでにこれを行っている場合は、わざわざそうするのは嫌です. おそらく誰かがすでに行っている非常に基本的な機能のようです。

ユースケースは、プラットフォームに関連するさまざまな制限のために、ファクトリ パターンを使用してデータ構造を作成することです。そのため、結果として作成されたオブジェクトが表面の標準インターフェイスに準拠していることをテストできる必要があります。また、「適合」とは、テストがインターフェース関数が存在することだけでなく、機能することもチェックする必要があることを意味することに注意してください (たとえば、マップで値を設定および取得できます)。Python 2.7 テストが優先されます。

4

2 に答える 2

0

ABC モジュールに基づく標準モジュールには、抽象基本クラスがあります。collections

クラスが標準の動作に対応していることを確認するには、これらのクラスからクラスを継承する必要があります。

import collections

class MyDict(collections.Mapping):
    ...

また、抽象クラスを明らかに継承していない既存のクラスをテストすることもできます。

class MyPerfectDict(object):
    ... realization ...

def is_inherit(cls, abstract):
    try:
        class Test(abstract, cls): pass
        test = Test()
    except TypeError:
        return False
    else:
        return True

is_inherit(MyPerfectDict, Mapping) # False
is_inherit(dict, Mapping) # True
于 2013-05-16T18:18:39.653 に答える