我的项目的目录结构如下:
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
测试运行没有问题。
答案 0 :(得分:0)
问题实际上很简单;我在
的结尾留了一个冒号class PROJECT_INTEGRATION_TEST(unittest.TestCase) # <- no colon
在test_integration.py中解决此问题后,在test_integration.py中用import my_only_script
进行导入就可以了。