我最近遇到了一些单元测试代码,它导入模块以在要测试的函数中进行测试,而不是模块级导入。
然后,谷歌搜索后,我发现Pylons/Pyramid best practices的原因是“导入失败......永远不应该阻止这些测试运行”。
这应该是标准做法吗?
我发现它有点难看,而且,他们的类示例看起来像是轻微的过度工程。
答案 0 :(得分:1)
如果导入文件顶部测试的所有模块,而不是单元测试功能,则导入错误将阻止任何测试运行。我对此有两点看法。这取决于你如何运行你的单元测试。
如果您在命令行上运行测试,或者从Hudson或Jenkins运行测试,那么您将注意到导入错误并立即更正。在这种情况下,我不认为在模块级别导入所有内容是一个问题。它当然更方便,并且需要更少的重复。
如果导入错误有可能导致静默失败(例如,如果您的unittest框架甚至无法告诉您它失败,除非它可以导入您的测试模块),那么在其中导入模块可能更安全你的测试功能。