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

时间:2014-12-26 19:10:32

标签: python

(Python的新手,老Java家伙。)我已经遵循了Python项目设置的建议(详见此处:What is the best project structure for a Python application?)。

我的结构是:

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()

我确定这是一个简单的新手Python错误,但是尽管谷歌搜索我不知道我是否必须修改PYTHONPATH或采用其他解决方案。

1 个答案:

答案 0 :(得分:3)

虽然这不是绝对必要的,但我会消除歧义 目录/包/模块结构,以便您了解,每个步骤的目的都将是明确的。

artman_dir
`-- artman_pkg
    +-- __init__.py
    +-- artman.py
    +-- util.py
    +-- test
        `-- util_test.py
  • artman_dir添加到您的PYTHONPATH。
  • 将名为__init__.py的空文件添加到artman_pkg

这两个步骤一起允许你

import artman_pkg

来自任何 python脚本。

然后,您可以在util using an absolute import中导入util_test.py

import artman_pkg.util as util

并且其余代码可以保持不变。