Python单元测试模块抛出“ ModuleNotFoundError:没有名为'tests.test_file'的模块”

时间:2019-06-26 21:06:11

标签: python python-3.x unit-testing anaconda

我正在尝试为我正在从事的项目执行测试用例。我以前曾经成功地执行过单元测试,但现在出错了。我肯定知道没有任何库的更新或Path中的更改。我试图查看源代码并弄清楚为什么会出错,但是还没有运气。任何帮助,将不胜感激。

Python版本-3.7.1

下面的示例代码

import unittest

class MyTestCase(unittest.TestCase):

def test_dummy(self):
    self.assertEqual(2+2,4)

我在cmd中使用了以下命令来执行测试。

  
    
      

C:\ Users \ Yadada \ Desktop \ repo \ mwe \ mwe> python -m unittest tests \ test_file.py'''

    
  

我的文件夹结构是

 MEW -|
      |_tests - |
                |_test_file.py

期望的输出是测试成功执行的原因,因为它很简单。但是我最终遇到以下错误

================================================ ======================

strclass
ERROR: test_file (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: test_file
Traceback (most recent call last):
  File "C:\Users\yadada\AppData\Local\Continuum\anaconda3\lib\unittest\loader.py", line 156, in loadTestsFromName
    module = __import__(module_name)
ModuleNotFoundError: No module named 'tests.test_file'


----------------------------------------------------------------------
Ran 1 test in 0.001s

2 个答案:

答案 0 :(得分:1)

在测试文件夹中放置一个空init.py文件后,该问题已解决。

要详细了解其工作原理,请参阅What is __init__.py for?

谢谢@aws_apprentice的帮助。

答案 1 :(得分:0)

使用PyCharme 2020.2,在子文件夹中运行单元测试时,也会发生“ ModuleNotFoundError:未命名模块”错误,该子文件夹从被测父文件夹中导入模块。 PyCharme默认采用执行测试失败的脚本路径,例如出现此错误:

ModuleNotFoundError: No module named '/home/foobar/projects/foo/mypythonproject/moduleundertest'

解决方案是编辑单元测试的run configuration,并将单元测试目标从“脚本路径”更改为“模块名称”。