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()来测试。