使用 pytest 将 Python 导入到项目中

问题描述 投票:0回答:1

我正在尝试向项目添加一些单元测试,但项目内的导入不起作用。

项目结构如下:

root
| src
| | __init__.py
| | bsp.py
| | helpers.py
| test
| | __init__.py
| | test_helpers.py

两个 init.py 都是空的。 bsp.py 如下所示:

class BSP:
    # some class stuff

helpers.py 如下所示:

from bsp import BSP

def func(x: BSP) -> BSP:
    return x

最后 test_helpers.py 如下所示:

from src.helpers import func
from src.bsp import BSP
from unittest import TestCase

class TestFunc(TestCase):
    def test_func(self):
        x = BSP()
        assert func(x) == x

当我从 root 运行

pytest
时,导入不起作用:

File "...\\root\\tests\\test_helpers.py", line 1, in \<module\>
from src.helpers import func
File "...\\root\\src\\helpers.py", line 1, in \<module\>  
from bsp import BSP
ModuleNotFoundError: No module named 'bsp'

但是从 src 运行该函数确实有效。

我可能做了一些愚蠢的事情,但我已经寻找了一段时间并且不确定我做错了什么:sweat_smile:

我已经尝试过:

  • 添加 .在 src/helpers.py 中的
    from bsp import BSP
    中的 bsp 前面;但是现在 src 中的导入已损坏(例如 src/main.py 从 helper 执行 func,如果添加 . 则会引发导入错误)
  • 尝试使用
    pytest
    py -m pytest
    unittest
    py -m unittest
  • 尝试在 root 中添加 init.py,并从 src/test 中添加/删除
python pytest importerror
1个回答
0
投票

我最近也遇到了类似的问题。如果您使用 PyCharm,这可能会起作用。 设置源根文件夹。

  1. 右键单击您的 src 文件夹。
  2. 转到最后一个选项。将目录标记为。
  3. 选择“源根目录”。

[标记您的基本目录][1]

希望这有帮助。 [1]:https://i.stack.imgur.com/foeaK.png

© www.soinside.com 2019 - 2024. All rights reserved.