‘‘‘本人是python初学者看的课本是[python变成从入门到实践]课本指定编译器是Geany,用了一小段时间后,朋友推荐了pycharm,所以就用的pycharm编辑python,在课本的‘测试函数‘这一章中,pycharm无法显示书中所示的结果,所以就了解了一下PS:在geany中是完全再现书中的结果要测试的方法:name_function.py中的get_formatted_name()方法import unittestfrom name_function import get_formatted_name class NamesTestCase(unittest,TestCase): """测试name_function.py""" def test_first_last_name(self): """能够正确的处理像Janis Joplin这样的姓名吗?""" formatted_name = get_formatted_name(‘janis‘,‘joplin‘) self.assertEqual(formatted_name,‘janis joplin‘) def test_first_last_middle_name(self): """能够正确的处理像Wlfgang Amadeus Mozart这样的姓名吗?""" formatted_name = get_formatted_name(‘wolfgang‘,‘mozart‘,‘amadeus‘) self.assertEqual(formatted_name,‘Wolfgang Amadeus Mozart‘)# 这一行是为了看__name__的值print(‘*****‘+_name_)# 将unittest.main()改成下面这样if __name__ == ‘__main__‘: unittest.main() print(‘*****‘+_name_)这个是为了看_name_的值,记得要注释掉,否则别的py文件调用这个py文件的时候会运行,末尾和书中有点不一样,unittest.main()和if __name__ == ‘__main__‘: unittest.main()都可以,但是最好还是第二种,为了避免别的.py文件引用该文件后会运行该文件的unittest.main()方法,看不懂的下面就是解释这样的代码,结果不一定和梳理的一样,为什么呢?这要先从_name_这个属性开始说:比如一个python文件,命名为a.py当从编辑器中直接运行a.py或者从命令行中直接运行a.py,那么a.py的__name__属性就是‘__main__‘如果另外有一个b.py,从b.py中导入a.py,即b.py中import a,然后运行a.py,那么a.py的__name__属性就a.py的文件名,也就是‘a‘详情见:python中if __name__ == ‘__main__‘:说完__name__,大家就要看运行该文件时实际运行的是什么为了更明白的说明问题,不要用ctrl+shift+f10运行,要点右键,出来菜单后点运行正常来说,只有运行该py文件,结果才能跟书里的一样拿上面的例子来说,要运行test_name_function.py才能出来书中的结果,即点右键,出来菜单后点‘run test_name_function‘,但实际上点击了右键后出来的却是‘run Unittest in test_name_function‘,这个的意思好像是在test_name_function中运行Unittest,还是在Unittest中运行test_name_function,我也不是太清楚,总之,好像是一个引用,这就导致了__name__属性变了,不是‘__main__‘,而是‘test_name_function‘,导致出不来书中的结果,如下图略运行结果不是我们想要的这个问题的关键就在于,怎么讲‘run Unittest in test_name_function‘变成‘run test_name_function‘有三种方法:一:unittest运行单个用例1.如上代码如果我只想运行其中一个,如test_name_function,如何运行呢?2.如果想运行哪个用例,鼠标放到对应的区域,右键就能直接运行单个用例了二:unittest运行整个脚本用例1.如果想当前的脚本上所有的用例一起执行,只需要把鼠标放到if __name__ == ‘__main__‘,这句话的后面或者下方就行了三:python直接运行模式1.以上方式只能执行单元测试框架里面的内容,是没有测试报告输出的,如果想输出测试报告,就得以非unittest模式运行,也就是python直接运行2.点右上角,点开:Edit Configurations3.展开python和python tests这两个选项,会发现刚才运行的脚本名称在python tests这个选项下,也就是pycharm这个工具自动默认为unittest姿势运行了4.解决方法,只需从这里移除掉就行,选中这个脚本,点左上角的减号5.全部移除后,点Apply应用,然后点保存6.再回到脚本页面,右键运行,就能出测试报告(鼠标一定要放在if这一行后边右键,才能看到正常显示Run‘test’) ‘‘‘
‘‘‘以上是在不明白python规则情况下的解决办法。知道今天在研究unittest自动化测试,了解到unittest单元测试的最小单位是函数,且这些函数都要以test开头,这是才潘然醒悟,可能就是下面这个原因 pycharm默认支持python自有单元测试包‘unittest‘,所以定义的函数或者类包含‘test‘或者‘TEST‘的自研就默认只能使用unittest的方式运行最后把脚本里面的test改成tst,运行成功‘‘‘
原文地址:https://www.cnblogs.com/johnny889/p/9967415.html
时间: 2024-11-09 02:34:51