我正在尝试执行一个项目的测试用例,我一直在工作。我曾经成功地执行单元测试,但现在它的错误了。我知道肯定没有更新任何库或路径中的变化。我试图查看源代码,并找出它的错误,但没有运气。任何帮助将不胜感激。
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
我的文件夹结构是
MWE -|
|_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
5条答案
按热度按时间zed5wv101#
将空
__init__.py
文件放入测试文件夹后,问题得到解决。有关其工作原理的详细说明,请参阅What is init.py for?
谢谢@aws_学徒的帮助。
ldioqlga2#
在PyCharm 2020.2中,“模块未找到错误:在子文件夹中运行单元测试时,如果该子文件夹从被测父文件夹导入模块,则也会发生无模块名为”“的错误。PyCharm默认采用脚本路径来执行测试,但测试失败,例如出现以下错误:
解决方案是编辑单元测试的run configuration并将单元测试目标从“脚本路径”更改为“模块名称”。
i1icjdpr3#
原因是一些库已经在使用该包名,请参见:this stack overflow question about reserved package names
要理解这个问题:重命名这
tests
软件包到tests_package
软件包.(test
也是一个保留的软件包名称)之前:
之后:
(从python 3.3开始,不再需要
__init__.py
。)然后运行
python -m unittest tests_package\test_file.py
使用"venv"可以解决
tests
软件包名称问题,但不能解决test
问题也许一个更加Python化的解决方案是,通过给项目一个唯一的模块名,使项目不在"root"下运行,从而使您不必为
tests
目录使用Python库未使用的包名。例如:然后从"GitFolderOfProject"中以
python -m unittest MWE\tests\test_file.py
运行测试xfb7svmp4#
对我来说,解决办法是补充:
放到我测试文件的最后。
然后我就可以跑了:
还需要从
python -m
命令中删除.py
后缀:有关详细信息,请参见this answer。
x8diyxa75#
这是一个简单的魔术设置。
首先-在PyCharm中:
1.右键单击包含测试的文件夹(在项目树中)-将此文件夹标记为“测试文件夹”。
1.右键单击包含源文件的文件夹(在项目树中)-将此文件夹标记为“源文件夹”。
1.删 debugging 误的“运行配置”(或不删除,由您选择)。
1.右键单击测试文件夹(已标记为“测试文件夹”)-选择“运行”。
就这些。真的很简单。合乎逻辑。我花了大约一个小时才弄明白。