您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python单元测试中多行字符串的比较

Python单元测试中多行字符串的比较

Python源代码的一点点挖掘表明,TestCase注册了许多方法来测试不同类型的相等性

self.addTypeEqualityFunc(dict, 'assertDictEqual')
self.addTypeEqualityFunc(list, 'assertListEqual')
self.addTypeEqualityFunc(tuple, 'assertTupleEqual')
self.addTypeEqualityFunc(set, 'assertSetEqual')
self.addTypeEqualityFunc(frozenset, 'assertSetEqual')
try:
    self.addTypeEqualityFunc(unicode, 'assertMultiLineEqual')
except NameError:
    # No unicode support in this build
    pass

您可以看到unicode注册使用assertMultiLineEqual(),但未str注册任何特殊功能。我不知道为什么会str被遗漏,但是到目前为止,我对以下两种方法中的任何一种都感到满意。

如果assertMultiLineEqual()认未注册使用8位字符串,则仍然可以直接调用它。

def testString(self):
    a = 'xax\nzzz'
    b = 'xbx\nzzz'
    self.assertMultiLineEqual(a, b)

您也可以自己注册。只需在测试用例的setUp()方法添加一行即可。只需执行一次,您的所有测试方法都将使用正确的方法测试相等性。如果您的项目在所有测试用例中都有一个通用的基类,那将是放置它的好地方。

class TestAssertEqual(unittest.TestCase):
    def setUp(self):
        super(TestAssertEqual, self).setUp()
        self.addTypeEqualityFunc(str, self.assertMultiLineEqual)

    def testString(self):
        a = 'xax\nzzz'
        b = 'xbx\nzzz'
        self.assertEqual(a, b)

    def testUnicode(self):
        a = u'xax\nzzz'
        b = u'xbx\nzzz'
        self.assertEqual(a, b)

这些方法中的任何一种都将在字符串比较失败时突出显示

python 2022/1/1 18:30:26 有200人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶