首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >unittest的assert.equal在它应该返回时不会失败

unittest的assert.equal在它应该返回时不会失败
EN

Stack Overflow用户
提问于 2018-06-28 18:11:12
回答 1查看 83关注 0票数 0

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

代码语言:javascript
复制
full_name = first + ' ' + last
full_name = full_name.title()

下面的代码应该失败,但正在传递。我用的是单位测试。

代码语言:javascript
复制
formatted_name = get_full_name('janis', 'joplin')
self.assertEqual(formatted_name, 'anis Joplin')

最简单的输出如下:

代码语言:javascript
复制
Ran 0 tests in 0.000s
OK

为什么这个测试会在失败时通过呢?

全文如下:

以下是供您审阅的完整代码:

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-28 18:47:57

你有压痕错误。您的unittest.main()调用在您的类中,它应该在全局级别上--或者更好地说,在主保护中,例如

代码语言:javascript
复制
if __name__ == '__main__':
    unittest.main()

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

请注意,如果在NamesTestCases之前添加了一个单独的测试类,那么即使在错误的位置调用unittest.main(),您也会看到这些测试正在运行,从而确认了上述情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51089099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档