当前位置:  开发笔记 > 编程语言 > 正文

为什么IDLE不需要'if __name__ =="__ main__":运行测试用例,但是PyCharm呢?

如何解决《为什么IDLE不需要'if__name__=="__main__":运行测试用例,但是PyCharm呢?》经验,为你挑选了1个好方法。

我正在练习使用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中起作用呢?



1> Burhan Khali..:

您正在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__'检查:

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有