从单元测试代码导入包

时间:2013-07-31 18:55:51

标签: python unit-testing python-2.7

我喜欢将源代码与测试代码分开。所以,我的项目组织如下:

my_package/
   module1.py
   module2.py
tests/
  units/
    test_a.py
    test_b.py
  perf_tests.py

test_a.py应如何导入my_package

注意:我已经使用Google搜索(包括SO)并且对答案不满意:

  • 我不想使用setup.py,因为我想从开发中运行;毕竟这是用于测试的
  • 我不想使用符号链接或其他黑客
  • 我尝试过sys.path.append('../')sys.path.append(os.path.realpath('../'))。两者都会产生ImportError: No module named my_package。也许类似的事情可以通过PYTHONPATH完成 - 语法是什么?
  • 我确实想写一个可以找到正确文件的正确import语句

1 个答案:

答案 0 :(得分:0)

首先,您必须在文件夹__init__.py中包含my_package文件,以便允许Python将此文件夹识别为有效模块。例如,您可以使用一行__init__.py创建一个空的pass文件。

然后,您可以在test_a.py中执行以下操作:

import os
bkp = os.getcwd()
os.chdir(r'..\..')
import my_package
os.chdir(bkp)

或者使用PYTHONPATHsys.path.append()的其他选项。