python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python测试函数出现AssertionError:None != ‘Janis Joplin‘

Python测试函数出现AssertionError:None != ‘Janis Joplin‘问题及解决

作者:画忆笙

这篇文章主要介绍了Python测试函数出现AssertionError:None != ‘Janis Joplin‘问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Python测试函数出现AssertionError:None != ‘Janis Joplin‘

当使用Python测试函数时,可能会出现AsserttionError,即断言错误。

根据错误提示可知,空值不能和测试期望结果Janis Joplin相同,仔细查看

正在测试的函数并没有返回值,也就是所谓的none,所以才会出现错误。

错误函数代码

如下:

def get_formatted_name(first, last):
    """获得一个整洁的完整的姓名"""
    full_name = first+' '+last
    print(full_name.title())

我们发现,单独进行运行代码时,反而没有问题,可是,一旦执行测试代码就会发生断言错误。

测试代码

import unittest
from name_function import get_formatted_name
class NamesTestCase(unittest.TestCase):
    """测试函数name_function()"""
    def test_first_last_name(self):
        formatted_name = get_formatted_name('janis', 'joplin')
        self.assertEqual(formatted_name, 'Janis Joplin')
if __name__ == '__main__':
    unittest.main()

运行测试代码时会发现traceback:

Traceback (most recent call last):
  File "\test_name_function.py", line 10, in test_first_last_name
    self.assertEqual(formatted_name, 'Janis Joplin')
AssertionError: None != 'Janis Joplin'

当我们把欲测试的函数添加一个返回值时,即:

def get_formatted_name(first, last):
    """获得一个整洁的完整的姓名"""
    full_name = first+' '+last
    return full_name.title()

再重新运行测试代码,就不会发生错误了。

测试结果

如下:

Ran 1 test in 0.003s
 
OK
 
Process finished with exit code 0

注意:

这里有的人可能是:

.
----------------------------------------------------------------------
Ran 1 test in 0.000s
 
OK

这是电脑设置问题,但影响不大,句点的作用就是测试完的个数,结果中已经有了数字1,如果数量多的时候,不会有人去一个个数几个句点吧。

注意

还有会发生不能测试的情况,这里很大可能是unittest调用主函数时,没有条件判断if __name__ == '__main__',即正确代码应为:

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

而不是:

unittest.main()

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文