perl を知っている人のためにTest::Deep::is_deeply()
、Python に似たものを探しています。
Python の unittestでは、ネストされたデータ構造が等しいと予想される場合は、すでに便利に比較できます。
self.assertEqual(os.walk('some_path'),
my.walk('some_path'),
"compare os.walk with my own implementation")
ただし、必要なテストでは、os.walk
タプルのそれぞれのサブリスト内のファイルの順序は関係ありません。
この 1 つのテストだけであれば、簡単なソリューションをコーディングしても問題ありません。しかし、異なる構造のネストされたデータに対するいくつかのテストを想定しています。そして、私は一般的な解決策を望んでいます。
私は Python 自身のunittest documentationをチェックし、 pyUnitを見て、nose を見て、それは pluginsです。アクティブなメンテナンスも使用上の重要な側面です。
私の最終的な目標は、ネストされたデータ構造を記述するために呼び出すことができる 、 、 などの記述型のセットを用意し、その記述を使用して 2 つの実際のデータ セットを比較することUnorderedIterable
ですSubsetOf
。SupersetOf
os.walk の例では、次のようなものが必要です。
comparison = OrderedIterable(
OrderedIterable(
str,
UnorderedIterable(),
UnorderedIterable()
)
)
上記は、返されるデータ構造の種類について説明していlist(os.walk())
ます。単体テストでのデータA
とデータの比較では、現在のパス名が にキャストされ、ディレクトリとファイルのリストが順序を無視して比較されます。B
str()
self.assertDeep(A, B, comparison, msg)
そこに何かありますか?それとも、人々が自分で書くのはとても些細な仕事ですか? 私はそれを快適に行うことができますが、再発明したくはありません。特に、型の完全な直交セット、それらのテストなどをコーディングしたくありません。要するに、私はそれを公開しないので、次のものはもう一度書き直して…