4

当前具有以下文件层次结构:

\package
    __init__.py
    run_everything.py

    \subpackage
        __init__.py
        work.py
        work1.py
        work2.py

    \test
        __init__.py
        test_work.py
        test_work1.py

我的第一个问题是关于相对进口的。假设在 \subpackage\work.py 中有一个名为 custom_function() 的函数,我想在 test_work.py 中测试该函数。出于某种原因,我无法弄清楚如何从一个模块导入到另一个模块。尝试from .. subpackage.work1 import custom_function()似乎不起作用,并产生错误Attempted relative import in non-package有没有办法解决这个问题?

2) 我想用一个函数从 run_everything.py 运行所有测试文件,会在每个 test_work*.py 文件中添加一个 suite() 函数,它将每个 unit_testing 类添加到 suite.addTest(unittest.makeSuite(TestClass)) ,最后将它们导入顶级run_everything.py是Python2.7中最常规的方式吗?

4

1 回答 1

1

这是一个 hack*使用以下
命令将“子包”和“测试”的路径插入到 run_everything 中的 python 路径:

    导入系统
    sys.path.insert(0, '/path/to/package/subpackage')
    sys.path.insert(0, '/path/to/package/test')

然后,您可以在 run_everything 中使用 vanilla 导入来导入所有文件:

    导入工作,工作1,工作2
    导入 test_work, test_work1

*这不会永久影响您的 PYTHONPATH。*不要忘记对我的硬编码投反对票:(

于 2012-08-24T19:52:12.367 回答