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()
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Pycharm cannot set up a python SDK问题的原因及解决方法
这篇文章主要给大家介绍了关于Pycharm cannot set up a python SDK问题的原因及解决方法,这个问题已经不是第一次出现了,所以干脆总结下,需要的朋友可以参考下2022-06-06更改Ubuntu默认python版本的两种方法python-> Anaconda
当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Python 版本,因此系统中会存在多个 Python 的可执行二进制文件。一般Ubuntu默认的Python版本都为2.x, 如何改变Python的默认版本呢?下面来一起看看吧。2016-12-12Python数据分析之使用matplotlib绘制折线图、柱状图和柱线混合图
matplotlib是python的一个模块,用于绘制各种图形,今天介绍一下折线图的绘制,下面这篇文章主要给大家介绍了关于Python数据分析之使用matplotlib绘制折线图、柱状图和柱线混合图的相关资料,需要的朋友可以参考下2022-05-05
最新评论