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)