【发布时间】:2017-06-10 02:07:34
【问题描述】:
我正在练习使用 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 中却起作用?
【问题讨论】:
-
这完全取决于测试运行器在 IDE 中的设置方式。
-
if __name__ == "__main__":无论如何都是最佳实践:这意味着您的代码可以在不运行的情况下导入。一些分析工具需要这种能力才能发挥作用,而且在任何情况下都非常有用。 -
@NickA 是 PEP8 要求的
if __name__ == "__main__":? -
顺便说一句,这个问题目前没有描述在你做出改变之前发生了什么,并且事情“突然完美地工作”。这是相关的 - 例如,如果您有重复执行正在发生或被尝试,这与错误的性质完全一致。
-
我一次运行一个程序,唯一改变的是单行(和缩进),但是哇,我不知道这可能是一件事。因此,如果我运行 IDLE 和 Pycharm,并且都让它们同时从同一个文件中导入,那会影响事情吗?很高兴知道
标签: python unit-testing main