ImportError:在Python集成测试中无法导入测试模块

时间:2020-03-25 14:43:59

标签: python python-3.x integration-testing python-import python-unittest

我的项目的目录结构如下:

project/
│
├── __init__.py
├── my_only_script.py
│ 
│
└── tests/
    |
    └── unit/
    |   ├── __init__.py
    |   └── unit_test.py
    |
    └── integration/
        |
        ├── fixtures/
        |   ├── correct_data.csv
        |   └── generated_data.csv
        |
        ├── __init__.py
        └── test_integration.py

我正在尝试通过在测试目录上的发现模式下运行unittest来对my_only_script.py执行集成测试

# working directory is project root 
python -m unittest discover -s tests

但是,当我运行此命令时,遇到错误

ImportError: Failed to import test module: integration.test_integration

为什么unittest可以发现集成测试-毕竟,它以integration.test_integration的名称提到了该模块,所以它一定已经找到了它-但是,集成测试仍然可以不能导入?


修改

我遇到的完整错误消息是

(base) [project]$ python -m unittest discover -s tests
E
======================================================================
ERROR: integration.test_integration (unittest.loader._FailedTest)

ImportError: Failed to import test module: integration.test_integration
Traceback (most recent call last):
File "/home/david/anaconda3/lib/python3.7/unittest/loader.py", line 436, in _find_test_path
module = self._get_module_from_name(name)
File "/home/david/anaconda3/lib/python3.7/unittest/loader.py", line 377, in _get_module_from_name
import(name)
File "/home/david/project/tests/integration/test_integration.py", line 13
class PROJECT_INTEGRATION_TEST(unittest.TestCase)
^
SyntaxError: invalid syntax

Ran 1 test in 0.000s

FAILED (errors=1)

在test_integration.py中,除了普通的from ... import my_only_script之外,我还尝试了相对导入from project import my_only_script,绝对导入import my_only_script。我还尝试完全注释掉import语句。所有这些似乎都导致上述错误。

我知道test_integration.py中的代码没有什么错误,因为如果我将其移至项目目录的根目录,并使用python test_integration.py进行运行,其中test_integration .py使用import my_only_script测试运行没有问题。

1 个答案:

答案 0 :(得分:0)

问题实际上很简单;我在

的结尾留了一个冒号
class PROJECT_INTEGRATION_TEST(unittest.TestCase) # <- no colon

在test_integration.py中解决此问题后,在test_integration.py中用import my_only_script进行导入就可以了。