在测试内部导入而不是在模块开头导入是否更Pythonic?

Ale*_*han 6 python unit-testing pycharm

“PyCharm 知道在测试中您会在单元测试中而不是在模块启动时进行导入”是“PyCharm 7/8 入门:测试”视频中关于PyCharm提供的测试功能的引用。

来自PEP8

导入始终放在文件的顶部,紧接在任何模块注释和文档字符串之后,以及模块全局变量和常量之前。

在另一个 SO 问题中,在 python 中导入的位置的概念已经作为一个 broder 概念得到解决。但是,没有提及单元测试时的特殊情况。

通过导入内部测试而不是在模块开始时导入,我们可以获得什么优势?

如果不同的测试使用相同的模块,是否每次都需要导入该模块?

Qba*_*ack 0

根据这个问题,最好将您的内容放在import模块的开头。

如果您将 放在import函数的开头,则import仅在该函数内部可用,您将无法在 this 之外使用它function。考虑这个例子:

def func():
    import time
    time.sleep(1)

func()
time.sleep(1) # NameError: name 'time' is not defined
Run Code Online (Sandbox Code Playgroud)

另外,如果您将import模块放在函数内,那么每次调用函数时都会导入该模块,正如这个问题中提到的那样

test我认为只有当您确实想在具体情况下测试此导入时,才应该将导入放入其中。