我正在尝试进行单元测试,但不太明白为什么这两个单词显示为不相等。我想知道是否有人可以给我一个解释。我的代码是......
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()
我为assertEqual
,assertEquals
和assertDictEquals
获得了相同的结果。我在测试之前尝试将result_dict
分配给known_dict
,但这也没有通过。
如果有人能指出我为什么会发生这种情况,那就太好了。谢谢阅读。 :)
答案 0 :(得分:0)
你滥用断言。所有assertXYZ
方法都不返回布尔值,如果断言失败,它们只会引发异常。由于这些方法不返回任何内容,因此它们隐式返回None
。将None
作为布尔值进行评估时,将其视为false,因此即使测试实际通过,您的测试也会打印is_email_valid failed
。