Unittest - 测试dict平等

时间:2016-05-31 04:54:00

标签: python python-2.7 unit-testing dictionary

我正在尝试进行单元测试,但不太明白为什么这两个单词显示为不相等。我想知道是否有人可以给我一个解释。我的代码是......

import unittest

class TestEmailValidator(unittest.TestCase):

    def test(self):
        known_dict = {
            'debo@foobar.com': True,
            'debo@gmail.com': False
        }

        result_dict = {}

        for key in known_dict.keys():
            result_dict[key] = is_email_valid(key)

        # debugger results
        # result_dict = {
        #    'debo@foobar.com': True,
        #    'debo@gmail.com': False
        # }

        if self.assertEqual(known_dict, result_dict):
            print "is_email_valid passed"
        else:
            print "is_email_valid failed"

if __name__ == '__main__':
    unittest.main()

我为assertEqualassertEqualsassertDictEquals获得了相同的结果。我在测试之前尝试将result_dict分配给known_dict,但这也没有通过。

如果有人能指出我为什么会发生这种情况,那就太好了。谢谢阅读。 :)

1 个答案:

答案 0 :(得分:0)

你滥用断言。所有assertXYZ方法都不返回布尔值,如果断言失败,它们只会引发异常。由于这些方法不返回任何内容,因此它们隐式返回None。将None作为布尔值进行评估时,将其视为false,因此即使测试实际通过,您的测试也会打印is_email_valid failed