簡體   English   中英

運行測試時看到 ModuleNotFoundError

[英]ModuleNotFoundError seen when running test

我有一個項目目錄如下:

bin/
bin/module1/module1.py
bin/module1/settings.py 
bin/module1/helpers.py  --> This module does not have reference to bin/module1/settings.py
bin/module2/module2.py
bin/module2/settings.py
bin/module2/helpers.py --> This module has reference to bin/module2/settings.py
bin/tests/test_module1.py --> This test imports helpers from bin/module1/helpers.py
bin/tests/test_module2.py --> This test imports helpers from bin/module2/helpers.py
bin/tox.ini
bin/conftest.py
bin/setup.py

setup.py 有以下內容:

from setuptools import setup, find_packages

setup(
    name='my_project',
    version='0.0.1',
    description='Implement my_project',
    long_description='Implement my_project',
    author='my_name',
    author_email='a.my_name@my_domain.com',
    packages=find_packages(exclude=['tests*'])
)

我正在使用 pytest。

當我運行test_module1.py時,它使用 pytest 標記引用bin/module1/helpers.py並且bin/module1/helpers.py沒有導入到bin/module1/settings.py 測試運行良好。

但是,當我使用 pytest 標記運行bin/tests/test_module2.py並且bin/module2/helpers.py已導入bin/module2/settings.py時,當此測試運行時,我看到ModuleNotFoundError: No module named 'settings' error

    import settings as settings
E   ModuleNotFoundError: No module named 'settings'

我知道的唯一方法是改變
import settings as settings

import.settings as settings編碼愉快!

使用 SO 鏈接解決了該問題: 從 Python 解釋器運行時出現“ImportError:嘗試使用沒有已知父包的相對導入”

使用上述鏈接中的方法1,如下所示:

try:
    # Assume we're a sub-module in a package.
    from . import models
except ImportError:
    # Apparently no higher-level package has been imported, fall back to a local import.
    import models

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM