1

最も慣用的な方法は何ですか (それを行うための明白な方法が1つ、できれば1つだけあるはずです:))反復可能なインスタンスで正確にcount回発生することを主張する方法は何ですか? 以下で説明する動作を実現したい。

checked = 'pum-pum-pata-pum'

#something like this
self.assertIn('pum', checked, count=3) # OK
self.assertIn('pum', checked, count=2) # Error
self.assertIn('pum', checked, count=4) # Error

私はdjango assertContainsでこの機能を持っていますが、応答があると主張します。

4

1 に答える 1

2

リストまたはタプルを扱っている場合、私の推測では、最も慣用的な方法は

assert iterable.count(element)==number

elementこれは、文字列の要素が文字であるため、「反復可能なインスタンスで何かが正確に count 回発生する」ことを厳密にカウントしませんが、おそらく、これは文字列でも機能します。

一般的なイテラブルでは、リスト内包表記またはラムダを使用したフィルターを使用できます。

assert len([e for e in iterable if e==element]) == number
assert len(filter( lambda e:e==element, iterable)) == number

ほとんどの人にとって、最初のオプションが最も明確だと思います。

于 2013-10-17T09:24:53.153 に答える