Python测试和导入-导入错误
我必须遵循以下项目结构:Python测试和导入-导入错误,python,testing,import,Python,Testing,Import,我必须遵循以下项目结构: importTesting ├── importTesting │ ├── main.py │ ├── module_a.py │ └── module_b.py └── tests └── test.py 模块a.py 模块_b.py main.py test.py 我试图通过命令行运行main.py和test.py, 但是当我运行test.py时,我得到了关于模块_b not found的错误: psagot_api
importTesting
├── importTesting
│ ├── main.py
│ ├── module_a.py
│ └── module_b.py
└── tests
└── test.py
模块a.py
模块_b.py
main.py
test.py
我试图通过命令行运行main.py和test.py,
但是当我运行test.py时,我得到了关于模块_b not found的错误:
psagot_api) C:\Users\Roy\PycharmProjects\importTesting>python -m unittest
E
======================================================================
ERROR: tests.test (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: tests.test
Traceback (most recent call last):
File "C:\Users\Roy\anaconda3\envs\psagot_api\lib\unittest\loader.py", line 436, in _find_test_path
module = self._get_module_from_name(name)
File "C:\Users\Roy\anaconda3\envs\psagot_api\lib\unittest\loader.py", line 377, in _get_module_from_name
__import__(name)
File "C:\Users\Roy\PycharmProjects\importTesting\tests\test.py", line 2, in <module>
from importTesting.module_a import bar
File "C:\Users\Roy\PycharmProjects\importTesting\importTesting\module_a.py", line 1, in <module>
from module_b import foo
ModuleNotFoundError: No module named 'module_b'
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
psagot\u api)C:\Users\Roy\PycharmProjects\importetting>python-m unittest
E
======================================================================
错误:tests.test(unittest.loader.\u失败测试)
----------------------------------------------------------------------
ImportError:导入测试模块失败:tests.test
回溯(最近一次呼叫最后一次):
文件“C:\Users\Roy\anaconda3\envs\psagot\u api\lib\unittest\loader.py”,第436行,在\u find\u test\u路径中
module=self.\u从\u name(name)获取\u module\u
文件“C:\Users\Roy\anaconda3\envs\psagot\u api\lib\unittest\loader.py”,第377行,在\u get\u模块\u from\u name中
__导入(名称)
文件“C:\Users\Roy\PycharmProjects\importetting\tests\test.py”,第2行,在
从importesting.module\u导入栏
文件“C:\Users\Roy\PycharmProjects\importesting\importesting\module_a.py”,第1行,在
从模块b导入foo
ModuleNotFoundError:没有名为“module_b”的模块
----------------------------------------------------------------------
在0.000秒内运行了1次测试
失败(错误=1)
有什么建议吗?包括改变项目结构
编辑-1:
每隔一段时间,我就会受到python导入机制的影响。包含导入的文件夹必须位于sys.path中
可以解决此问题的一些可能性:1.从代码中向sys.path添加导入/导入 2.使用pip作为软件包安装,然后将导入更改为importetting.something 3.从包含main.py的文件夹中运行python-m pytest 使用-m标记运行会将当前did添加到sys.path 4.将名为conftest.py的文件添加到与main.py相同的目录中 从项目根目录运行pytest时,会将包含conftest的文件夹添加到sys.path 我得说我对这些都不完全满意 谢谢
Roy建议:编辑问题并解释问题所在。这就是你想要实现的目标吗?嘿,Shawn,导入在从main.py运行时工作,但不使用unittes@RoyAssis您可以将test.py与其他模块一起放入第二个importetting文件夹中,然后导入它们directly@AribMuhtasim是的,你是对的。。。那么你认为我目前的项目结构是不可能的?
def foo(x):
return x
from module_a import bar
import unittest
from importTesting.module_a import bar
class TestCase(unittest.TestCase):
def test_bar(self):
self.assertEqual(bar(1),1)
psagot_api) C:\Users\Roy\PycharmProjects\importTesting>python -m unittest
E
======================================================================
ERROR: tests.test (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: tests.test
Traceback (most recent call last):
File "C:\Users\Roy\anaconda3\envs\psagot_api\lib\unittest\loader.py", line 436, in _find_test_path
module = self._get_module_from_name(name)
File "C:\Users\Roy\anaconda3\envs\psagot_api\lib\unittest\loader.py", line 377, in _get_module_from_name
__import__(name)
File "C:\Users\Roy\PycharmProjects\importTesting\tests\test.py", line 2, in <module>
from importTesting.module_a import bar
File "C:\Users\Roy\PycharmProjects\importTesting\importTesting\module_a.py", line 1, in <module>
from module_b import foo
ModuleNotFoundError: No module named 'module_b'
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)