【发布时间】:2021-07-30 00:58:21
【问题描述】:
问题
我正在尝试为我的项目进行单元测试,但在确定我的错误与绝对导入模块以进行测试有关的问题时遇到了问题。我使用 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 - reader.py - __init__.py + test_reader.py + data.txt + __init__.py
最后的评论
任何帮助将不胜感激!我觉得有一个非常简单的解决方案,我只是一直忽略。我知道以前在这里问过非常相似的问题,但是我所看到的所有确定的解决方案都是我已经尝试过或正在做的事情。因此,如果这是一个重复的问题,我深表歉意。谢谢!
【问题讨论】:
-
Run the tests from
project_folder,不要直接调用tests中的模块! -
只是一个快速提示:您可以将代码块放在代码围栏中而不是代码示例中
标签: python python-3.x unit-testing visual-studio-code directory