在测试中使用 if __name__ == '__main__':
当你写一些可以独立运行的脚本时,把if __name__ == '__main__'
用作测试的地方,这样做是不是不太好呢?
4 个回答
3
最好的做法是把测试放在单独的模块里,使用unittest这个工具。这样做可以让你的主要代码保持干净,不用在里面放很多测试用的辅助函数。同时,这也能鼓励你写出更全面、更好的测试,因为主代码不会被杂乱的测试代码干扰。
6
这主要取决于你的代码和脚本的目的。如果你在做一个大而复杂的项目,肯定需要把所有的测试放在一个单独的地方。
但是如果你在做一些小的东西,把测试和代码放在一起可能是个不错的选择。这就是doctest
的主要思想(这是一个很棒的Python模块,可以让你在文档字符串中写测试)。在这种情况下,你的if __name__ == '__main__'
看起来会像这样:
if __name__ == "__main__":
import doctest
doctest.testmod()
我觉得这样挺好,挺干净的。
5
测试逻辑和测试内容绝对不应该出现在“生产”代码中(生产代码指的是你正在使用的代码,或者已经交给客户的代码等等)。所以,把这些东西放在你的脚本里是个坏主意。
最理想的做法是把它们放在单独的文件里。