我正在练习使用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中起作用呢?
您正在PyCharm中运行代码,就像它是一个普通的Python应用程序一样; 这就是你需要if __name__ == '__main__'
条件的原因.在编写可以在命令行导入或运行的模块(文件)时,这也是最佳实践 - 单元测试的情况.
PyCharm基本上是在努力做到的 python your_file_name.py
IDLE不需要这个的原因是因为IDLE首先在Python shell中加载文件来运行应用程序.
IDLE正在做的是:
python >>> import your_file_name
通过这样做,代码被自动评估,函数被调用,因此测试运行.
我还建议阅读PyCharm手册中有关测试的文档,因为测试是PyCharm广泛支持的.在该链接中,您还会注意到示例测试用例的默认存根(或模板)已经具有if __name__ == '__main__'
检查: