我正在尝试为我的项目进行单元测试,但是在确定绝对导入要测试的模块时出现错误的位置时遇到问题。我使用 Visual Studio Code 作为我的 IDE。
我的目录如下所示:
project_folder
+ code_files
- reader.py
- __init__.py
+ tests
- test_reader.py
- data.txt
- __init__.py
我的“test_reader.py”文件如下所示:
import unittest
from code_files.reader import Reader
class Test_LineCounter(unittest.TestCase):
def test_empty_file_long(self):
self.assertEqual(Reader.line_counter(self, "data.txt"), 4)
if __name__ == "__main__":
unittest.main()
但是,我不断收到错误:
ModuleNotFoundError: No module named 'code_files'
说实话,当我进入这个项目时,我不太擅长使用目录、包或模块。我在线阅读了许多文章,并阅读了 Stack Overflow 和其他网站上的许多论坛帖子,试图找出可能导致此错误的原因以及如何解决它。通过这个,我觉得我对 Python 如何处理包和模块有了很好的理解。但我似乎仍然无法解决这个问题。
我尝试将“code_files”包放入不同的目录中,看看是否有效:
project_folder
+ app
+ code_files
- reader.py
- __init__.py
然后通过以下方式导入:
from app.code_files.reader import Reader
但后来我得到了错误:
ModuleNotFoundError: No module named 'app'
我唯一一次成功地让“test_reader”工作是当我的目录结构如下时:
project_folder
+ code_files …