Python:单元测试模块和相对导入

时间:2012-08-12 04:00:25

标签: python unit-testing import relative

目前有以下文件层次结构:

\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中最常见的传统方式吗?

1 个答案:

答案 0 :(得分:0)

这是一个黑客*
使用以下命令将路径转到“subpackage”和“test”到run_everything中的python路径:

    import sys
    sys.path.insert(0, '/path/to/package/subpackage')
    sys.path.insert(0, '/path/to/package/test')

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

    import work, work1, work2
    import test_work, test_work1

*这不会永久影响您的PYTHONPATH。 *不要忘记向我投票以进行硬编码:(