繁体   English   中英

Pytest:从命令行运行测试时没有名为“src”的模块

[英]Pytest: No module named 'src' when run tests from command line

所以我有python项目和pytest的几个测试。

这是我的项目层次结构:

project_name
  src
    managers
      config_manager.py (with ConfigManager class inside)
    tests
      api_tests.py
  config.ini

api_tests.py

from src.managers.config_manager import ConfigManager

def test_foo():
   print('tests tarted')

因此,当从我的pycharm ide 运行测试时,我点击运行按钮一切正常,但是当我使用终端开始测试时,出现此错误:

 from src.managers.config_manager import ConfigManager E ModuleNotFoundError: No module named 'src'

当然如果把这一行注释掉测试就可以执行了。 任何建议可能导致此问题以及如何解决?

原因:

解释器不知道去哪里找你的模块 / package

为什么使用PyCharm可以工作? 因为PyCharm自动解析路径。 您可以在设置中找到add content roots to PYTHONPATHadd content source roots to PYTHONPATH的选项。

如何使用终端运行测试? 文件内容:

# src/managers/config_manager.py
class ConfigManager:
    @staticmethod
    def get_config() -> dict:
        return dict(parsed='config')

# src/tests/api_tests.py
from src.managers.config_manager import ConfigManager
def test_get_config():
    print(ConfigManager.get_config())

打开终端:

cd project_name
tree
# Example structure. Result:
# ── src
#    ├── managers
#    │   ├── config_manager.py
#    │   └── __init__.py
#    └── tests
#        └── api_tests.py

export PYTHONPATH="${PYTHONPATH}:${pwd}/src/"
pytest src/tests/*
# =================================================================== test session starts ===================================================================
# platform linux -- Python 3.10.6, pytest-7.2.1, pluggy-1.0.0
# rootdir: /home/d_ganchar/PycharmProjects/project_name
# collected 1 item                                                                                                                                          
# src/tests/api_tests.py .                                                                                                                            [100%]
# ==================================================================== 1 passed in 0.00s ====================================================================

您也可以尝试使用pytest-srcpathstox

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM