我正在练习使用unittest,我在PyCharm中尝试了以下内容:
import unittest
from format_name import name_formatted
class TestName_formatted(unittest.TestCase):
"""practice with unittest"""
def test_name(self):
"""Testing name_formatted function"""
formatted_name = name_formatted("mike", "Cronin")
self.assertEqual(formatted_name, "mike Cronin")
unittest.main()
经过研究,我看到它是这样写的:
if __name__ == "__main__":
unittest.main()
突然间它完美无缺。但是,我这样写的原因,没有if语句,是因为我从“Python Crash Course”中学到了它,它使用GEANY和IDLE作为示例代码。当然,在这两个程序中,您不需要if语句。
为什么在一个IDE中代码不起作用而在其他IDE中起作用呢?
答案 0 :(得分:6)
您正在PyCharm中运行代码,就像它是一个普通的Python应用程序一样;这就是你需要if __name__ == '__main__'
条件的原因。这也是编写可以在命令行导入或运行的模块(文件)时的最佳实践 - 单元测试的情况。
PyCharm基本上是在尝试python your_file_name.py
IDLE不需要这个的原因是因为IDLE首先在Python shell中加载文件来运行应用程序。
IDLE正在做的是:
python
>>> import your_file_name
通过执行此操作,将自动评估代码,调用该函数,从而运行测试。
我还建议阅读PyCharm's manual中有关测试的文档,因为测试是PyCharm广泛支持的。在该链接中,您还会注意到示例测试用例的默认存根(或模板)已经进行if __name__ == '__main__'
检查: