在学习《python 编程从入门到实践》的第11章的时候,按照书中的代码进行实践测试结果发现了一些无法理解的bug,解决方法是比较简单,不过底层原理不太明白,今天就记录下等待以后水平提高了再来解答。
下面展示相关代码:
待测试代码 test_check_name.py1、待测试代码1
#生成整洁的姓名
def get_formatted_name(first,last):
full_mame=first+' '+last
return full_mame.title()
2、待测试代码2 test_check_name.py
#生成整洁的姓名
def get_formatted_name(first,middle,last):
full_mame=first+' '+middle+' '+last
return full_mame.title()
单元测试代码 tset_check.py
import unittest
from test_check_name import get_formatted_name
#测试test_check_names
class NamesTestCase(unittest.TestCase):
#能够正确的处理像 Janis Joplin
def test_first_last_name(self):
formatted_name=get_formatted_name('janis','joplin')
self.assertEqual(formatted_name,'Janis Joplin')
unittest.main()
问题描述
当第一个待测试代码在pycharm中执行的时候,显示的是正常的这也是
而当待测试代码变成第二个的时候,原本正常应该是要发生报错的可结果是显示如上图所示的显示正确的结果。这是十分异常的,不应该出现的问题。
在cmd中又是显示正常运行的
之后试过很多方法比如重新更换文件,修改设置,但都没有用。
经过在网上的交流搜索后也只是保证可以运行。那就是将 unittest.main() 删除或者修改成 unittest.main。
网上的解释是:pycharm 默认是内置unittest的,所以不用加unittest.main()。它可以自动识别 unittest单元测试,自动运行。
不过令人疑惑的是,为什么不能直接兼容 unittest.main()呢?毕竟这也是正常的编程方法,不知道为什么当初没有考虑到。
于此记录!



