我用的环境是vscode 2019 +anaconda3+jupyter notebook扩展,Python版本是3.9.7
在学习《Python编程从入门到实践》这本书的时候,第11章讲测试函数,第11.1.3小节有函数如下:
#11.1.3节函数
def get_formatted_name(first,middle,last):
"""生成整洁的姓名"""
full_name = f"{first} {middle} {last}"
return full_name.title()
将此函数存入了name_function.py,然后用unittest模块进行测试:
#测试代码
import unittest
from name_function import get_formatted_name
class NamesTestCase(unittest.TestCase):
"""测试get_function_name"""
def test_first_last_name(self):
"""能够正确地处理像Janis Joplin这样的姓名吗?"""
formatted_name = get_formatted_name("janis","joplin")
self.assertEqual(formatted_name,"Janis Joplin")
if __name__ == "__main__":
unittest.main(argv=['first-arg-is-ignored'], exit=False)
测试结果未通过,因为少了一个位置实参{last},于是在11.1.4小节中,对函数进行了修复,又存入name_function.py:
#11.1.4测试函数
def get_formatted_name(first,last,middle=""):
"""生成整洁的姓名"""
if middle:
full_name = f"{first} {middle} {last}"
else:
full_name = f"{first} {last}"
return full_name.title()
再次使用unittest进行测试,本应通过的测试,结果测试仍然是失败,显示缺少一个实参{last}(同函数修改前)
我将测试代码放在Python下进行独立测试,结果测试结果通过
于是我又在jupter notebook下测试,还是不通过
我重启了vscode,再次在jupter notebook下测试,通过!
我又将函数恢复成11.1.3节中的函数,存入name_function.py结果测试通过!(不应该通过,少了{last}实参)
重启vscode后,再次运行,11.1.3节中的测试代码又正常显示不通过!
这是什么情况?求高人解答!