进行unittest单元测试,修改未通过函数,测试结果不发生变化
跪求各位大神帮忙看看,本人新手一枚,正在学习《Python编程从入门到实践》这本书。
使用的环境是vscode 2019 +anaconda3+jupyter notebook扩展,Python版本是3.9.7。
我使用jupyter notebook来复写书中的代码并做笔记。
以下是碰到的问题:
在学到此书《11章-函数测试》的时候,在11.1.3节,有函数get_formatted_name()如下:
#11.1.3节函数,存入name_function.pydef get_formatted_name(first,middle,last):
"""生成整洁的姓名"""
full_name = f"{first} {middle} {last}"
return full_name.title()
然后导入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.pydef get_formatted_name(first,last,middle=""):
"""生成整洁的姓名"""
if middle:
full_name = f"{first} {middle} {last}"
else:
full_name = f"{first} {last}"
return full_name.title()
再次运行测试,仍显示测试未通过,说少一个{last}位置实参。测试结果错误!
我分明已经修复了函数!!
做出的尝试:
1 我将单元测试的代码复制到独立的Python下,重新执行测试。测试通过!测试结果正确
2 我将vscode关闭,再重新打开,进行测试,测试通过!测试结果正确
3 我再将函数恢复到11.1.13节中的函数,保存,再测试仍通过!测试结果错误
4 我将vscode关闭,再重新打开,进行11.1.13中的测试,测试未通过!测试结果正确
于是,我发现:
在jupyter notebook中进行的unittest测试,
假如函数本身可以通过测试,并进行了一轮测试,测试结果显示通过,那么
如果修改了函数,再进行测试必须要重启vscode,否则无论怎么改(即便本身就不能通过测试了),函数测试都是通过!
同理:
假如函数本身就不能通过测试,并进行了一轮测试,测试结果为不通过,那么
如果修改了函数,再进行测试必须要重启vscode,否则无论怎么改,(即便本身可以通过测试)函数测试都是未通过,连未通过的原因都是相同的!
这到底是怎么造成的?有什么逻辑在里面?跪求大神解答!
以上是 进行unittest单元测试,修改未通过函数,测试结果不发生变化 的全部内容, 来源链接: utcz.com/p/938357.html