在父文件夹中导入python包时出错

时间:2014-05-11 19:25:14

标签: python unit-testing module

我有以下目录结构:

.
├── Project
│   ├── __init__.py
│   ├── Project.py
└── tests
    ├── bootstrap.py
    ├── __init__.py
    └── unit
        └── test_utils.py

从项目的根目录开始,我正在运行$ python tests/bootstrap.py,但收到错误ValueError: Attempted relative import beyond toplevel package

这是test_utils.py

的内容
import unittest
import sys

from ... Project.Project import *

class TestUtils (unittest.TestCase):

    def test_file_changes (self):
        # some_function lives in Project.py
        var = some_function()
        self.assertEqual(200, var)

bootstrap.py文件没有任何特殊功能,只需加载测试。

import unittest
from unit.utils import TestUtils

def main ():
    utils= unittest.TestLoader().loadTestsFromTestCase(TestUtils)
    unittest.TestSuite([utils])
    unittest.main(verbosity=2)

if __name__ == '__main__':
    main()

有人能在这里看到问题吗?

1 个答案:

答案 0 :(得分:4)

导入层次结构(从本地目录导入时),从目录中查看包和模块,运行程序,而不是导入文件位置。

请遵循以下规则:

  1. 计划始终从项目的根目录运行测试
  2. 将您的测试代码放入test目录
  3. 您的所有测试套件都应像进入项目的根目录一样导入。
  4. 在您的情况下,只需更改

    from ... Project.Project import *
    

    from Project.Project import *