Python 单元测试如何导入他们测试的模块?

Python 单元测试如何导入他们测试的模块?,python,Python,(Python新手,Java老兄。)我遵循了Python项目设置的建议(如下所述:) 我的结构是: artman `-- artman +-- artman.py +-- util.py `-- test `-- util_test.py …而我的测试代码尝试导入它将要测试的util.py中的内容,但未成功: import unittest import util # <------ Unresolved import: util

(Python新手,Java老兄。)我遵循了Python项目设置的建议(如下所述:)

我的结构是:

artman
`-- artman
    +-- artman.py
    +-- util.py
    `-- test
        `-- util_test.py
…而我的测试代码尝试导入它将要测试的util.py中的内容,但未成功:

import unittest
import util        # <------ Unresolved import: util

class UtilTest( unittest.TestCase ):
    def testLookForArtmanRoot( self ):
        util.lookForArtmanRoot( "." )

if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.testName']
    unittest.main()
导入单元测试

import util#虽然严格来说不是必需的,但我会消除 目录/包/模块结构,让您了解,每一步的目的都会很清楚

artman_dir
`-- artman_pkg
    +-- __init__.py
    +-- artman.py
    +-- util.py
    +-- test
        `-- util_test.py
  • artman\u dir
    添加到PYTHONPATH
  • 将名为
    \uuuu init\uuuu.py的空文件添加到
    artman\u pkg
这两个步骤结合在一起可以让您

import artman_pkg
来自任何python脚本

然后您可以在
util\u test.py
中导入
util


代码的其余部分可以保持不变

亲爱的老爪哇人看一看,它几乎是一样的。很高兴听到人们离开这杯古老的咖啡去被蛇咬伤。(事实上,我不会离开它,我仍然会在爪哇工作。只是我加入了一家有很多蟒蛇的新商店,不想成为唯一的白痴。谢谢。)谢谢!在我这个阶段,这是非常有用的信息,而且效果非常好。我想指出的是,到目前为止,PyDev还没有要求我将artman_dir添加到我的PYTHONPATH中,但我并不排除,一旦构建并用作一个严肃的应用程序,artman将在我完成之前无法工作,但我将在稍后解决这个问题。您还可以使用相对导入:
from。导入util
。这样做的好处是,即使PYTHONPATH上有同名的其他包,它也会向您导入该包。@Bakuriu:。如果
test
目录不是Python包,则可以将其提升到
artman\u dir
。如果它是Python包,那么可以从
artman_dir
运行测试,而无需将PYTHONPATH更改为
Python-martman_pkg.test.util_test
import artman_pkg.util as util