天天看點

第十六章:開發工具-unittest:自動測試架構-容器

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'),
            )
           

這些方法分别使用對應輸入類型的格式來報告是否不相等,以便更容易地了解和修正測試失敗。

第十六章:開發工具-unittest:自動測試架構-容器

可以使用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()來測試。

第十六章:開發工具-unittest:自動測試架構-容器