16.3.7 容器
除了通用的assertEqual()和assertNotEqual()方法,還有一些特殊方法可以用來比較如list,dict和set對象等的容器。
import textwrap
import unittest
class CintainerEqualityTest(unittest.TestCase):
def testCount(self):
self.assertCountEqual(
[1,2,3,2],
[1,3,2,3],
)
def testDict(self):
self.assertDictEqual(
{'a':1,'b':2},
{'a':1,'b':3},
)
def testList(self):
self.assertListEqual(
[1,2,3],
[1,3,2],
)
def testMultiLineString(self):
self.assertMultiLineEqual(
textwrap.dedent("""
This string
has more than one
line.
"""),
textwrap.dedent("""
This string has
more than two
lines.
"""),
)
def testSequence(self):
self.assertSequenceEqual(
[1,2,3],
[1,3,2],
)
def testSet(self):
self.assertSetEqual(
set([1,2,3]),
set([1,3,2,4]),
)
def testTuple(self):
self.assertTupleEqual(
(1,'a'),
(1,'b'),
)
這些方法分别使用對應輸入類型的格式來報告是否不相等,以便更容易地了解和修正測試失敗。

可以使用assertIn()來測試容器的成員關系。
import unittest
class ContainerMembershipTest(unittest.TestCase):
def testDict(self):
self.assertIn(4,{1:'a',2:'b',3:'c'})
def testList(self):
self.assertIn(4,[1,2,3])
def testSet(self):
self.assertIn(4,set([1,2,3]))
支援in操作符或容器API的所有對象都可以使用assertIn()來測試。