单元测试的assert.equal返回应该失败的时间

时间:2018-06-28 18:11:12

标签: python

函数get_full_name将大写的名字和姓氏大写并返回全名,如下所示:

full_name = first + ' ' + last
full_name = full_name.title()

以下代码段应该失败,但是正在通过。我正在使用unittest。

formatted_name = get_full_name('janis', 'joplin')
self.assertEqual(formatted_name, 'anis Joplin')

单元测试的输出如下:

Ran 0 tests in 0.000s
OK

为什么该测试应在失败时通过?

完整代码如下:

这是您进行审核的完整代码:

import unittest
def get_full_name(first, last):
    full_name = first + ' ' + last
    full_name = full_name.title()
    return full_name

class NamesTestCase(unittest.TestCase):

    def test_first_last_name(self):
        formatted_name = get_full_name('janis', 'joplin')
        self.assertEqual(formatted_name, 'anis Joplin',)
    unittest.main()

1 个答案:

答案 0 :(得分:1)

您遇到了缩进错误。您的unittest.main()通话是在您的班级范围内进行的,应该在全局范围内进行-或更佳的做法是在主要后卫之内,例如

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

由于类体内的语句仍在执行,因此仍会调用unittest运行器,但是在调用时,没有定义的unittest.TestCase子类,它可以找到您的Ran 0 tests in 0.000s输出。 / p>

请注意,如果在NamesTestCases之前添加一个单独的测试类,则会看到即使在错误的位置调用unittest.main()的情况下,这些测试也可以运行,