unittest的assert.equal在应该返回时未失败

2024-06-16 12:29:02 发布

您现在位置:Python中文网/ 问答频道 /正文

函数get\u full\u name将名字和姓氏大写,并返回全名,如下所示:

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

下面的代码应该失败,但正在通过。我在用unittest

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

unittest输出如下:

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()

Tags: 代码nameselfgettitleunittestfullfirst
1条回答
网友
1楼 · 发布于 2024-06-16 12:29:02

你有缩进错误。你的unittest.main()调用在你的类中,它应该是全局级别的,或者更好的是,在一个主守卫中,比如

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

因为类主体中的语句仍在执行,所以仍然会调用unittest运行程序,但是在调用它时,unittest.TestCase没有定义的子类供它查找,这就解释了Ran 0 tests in 0.000s输出

请注意,如果在namestcases之前添加一个单独的测试类,您将看到这些测试即使在错误的位置调用unittest.main()也会运行,这证实了上述情况

相关问题 更多 >