簡體   English   中英

帶有單元測試和倍數模塊的導入錯誤

[英]ImportError with unittest and multiples modules

我有一個具有以下結構的項目:

/
├── test
│   ├── __init__.py
│   └── test_do_stuff.py
└── my_package
    ├── do_stuff.py
    ├── helpers
    │   ├── my_helper.py
    │   └── __init__.py
    ├── __init__.py
    └── main_do_stuff.py

運行測試時,我收到ImportError: No module named 'helpers'

當測試導入my_package.do_stuff ,它會嘗試導入helpers.my_helper

  • 運行測試的命令是python3 -m unittest (這是正確的方法嗎?)

  • 所有__init__.py都是空的。

test_do_stuff.py:

import unittest
import my_package.do_stuff
# ...

do_stuff.py:

import helpers.my_helper
# ...

main_do_stuff.py:

import do_stuff

python3 my_package/main_do_stuff.py有效。 main 調用與測試相同的函數。

問題是否來自我啟動測試的方式?

還是我的結構?

我試圖找到一個解決方案,它不涉及過多地弄亂路徑或編寫大量代碼來運行測試。 (應該有一種簡單的方法可以將測試與代碼分開,不是嗎?)

問題是使用隱式相對導入:

import helpers.my_helper

應該

import my_package.helpers.my_helper

您的問題是 python 不接受您的目錄層次結構。 只需將測試文件放在根目錄下(例如 /everything ),它就可以正常工作。 您的目錄可能如下所示:

/
└── everything
    ├── __init__.py
    ├── test_do_stuff.py
    └── my_package
        ├── do_stuff.py
        ├── helpers
        │   ├── my_helper.py
        │   └── __init__.py
        ├── __init__.py
        └── main_do_stuff.py

暫無
暫無

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

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