什么是最惯用的(应该有一个 - 最好只有一个 - 显然是这样做:) :)断言某些事情在可迭代实例中完全 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有这种能力,但它断言你有反应。
答案 0 :(得分:2)
如果您正在处理列表或元组,我的猜测是最惯用的方式
assert iterable.count(element)==number
这也适用于字符串,包括element
不是单个字符 - 尽管可以说,这并不严格计算“在可迭代实例中出现的事情恰好是计数次数”,因为字符串的元素是字符。
在泛型迭代中,您可以使用列表推导或使用lambda的过滤器:
assert len([e for e in iterable if e==element]) == number
assert len(filter( lambda e:e==element, iterable)) == number
我认为第一种选择对大多数人来说是最清晰的。