【问题标题】:Import package from unit test code从单元测试代码导入包
【发布时间】:2013-07-31 18:55:51
【问题描述】:

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

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

test_a.py应该如何导入my_package

注意:我已经用谷歌搜索过这个(包括 SO)并且对答案不满意:

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

【问题讨论】:

  • “我应该如何加载源代码”是什么意思?你是说进口东西吗?您想从哪个模块导入哪个模块? ...什么是“适当的包含”? ...python中没有“包含”。
  • 为什么不直接使用 PYTHONPATH 环境变量呢?这就是它的用途......
  • @Gerrat - 谢谢,重写问题以解决您的问题。
  • @Joran - 我不知道该怎么做:我试过使用 sys.path 也不能让它工作
  • 你在 tests/units 目录中吗?试试 sys.path.append(os.path.abspath('../..'))。

标签: python unit-testing python-2.7


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2015-08-19
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多