Python测试和导入导入错误

2024-06-01 03:12:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须遵循以下项目结构:

importTesting  
├── importTesting  
│   ├── main.py  
│   ├── module_a.py  
│   └── module_b.py  
└── tests  
    └── test.py  

模块a.py

from module_b import foo
def bar(x):
    return foo(x)

模块_b.py

def foo(x):
    return x

main.py

from module_a import bar

test.py

import unittest
from importTesting.module_a import bar

class TestCase(unittest.TestCase):
    def test_bar(self):
        self.assertEqual(bar(1),1)

我试图通过命令行运行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)

有什么建议吗?包括改变项目结构

编辑-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

我得说我对这些都不完全满意

谢谢 罗伊


Tags: pathinfrompytestimportfoomain