在测试中使用 if __name__ == '__main__':

10 投票
4 回答
2393 浏览
提问于 2025-04-17 01:22

当你写一些可以独立运行的脚本时,把if __name__ == '__main__'用作测试的地方,这样做是不是不太好呢?

4 个回答

3

最好的做法是把测试放在单独的模块里,使用unittest这个工具。这样做可以让你的主要代码保持干净,不用在里面放很多测试用的辅助函数。同时,这也能鼓励你写出更全面、更好的测试,因为主代码不会被杂乱的测试代码干扰。

6

这主要取决于你的代码和脚本的目的。如果你在做一个大而复杂的项目,肯定需要把所有的测试放在一个单独的地方。

但是如果你在做一些小的东西,把测试和代码放在一起可能是个不错的选择。这就是doctest的主要思想(这是一个很棒的Python模块,可以让你在文档字符串中写测试)。在这种情况下,你的if __name__ == '__main__'看起来会像这样:

if __name__ == "__main__":
    import doctest
    doctest.testmod()

我觉得这样挺好,挺干净的。

5

测试逻辑和测试内容绝对不应该出现在“生产”代码中(生产代码指的是你正在使用的代码,或者已经交给客户的代码等等)。所以,把这些东西放在你的脚本里是个坏主意。

最理想的做法是把它们放在单独的文件里。

撰写回答