我想知道如何在我的测试文件中正确导入文件而不在测试根文件夹中使用__init__.py
。 Migrate to Navigation guide状态的最后一句,test
目录不应该有init
个文件。
我对python知之甚少,所以我想知道:
1)为什么不呢
2)如何将文件tested.py
导入test_main.py
以测试其功能,而不使用init
文件作为插入PYTHONPATHS路径的脚本?
我的项目有以下结构
.
├── __init__.py
├── my
│ ├── __init__.py
│ ├── main.py
│ └── my_sub
│ ├── __init__.py
│ └── tested.py
└── test
└── test_main.py
文件包含以下代码
#/Python_test/__init__.py
import my.main
#/Python_test/my/__init__.py
#empty
#/Python_test/my/main.py
from .my_sub.tested import inc
print(inc(5))
#/Python_test/my/my_sub/__init__.py
#empty
#/Python_test/my/my_sub/tested.py
def inc(x):
return x+1
#/Python_test/test/test_main.py
from Python_pytest.my.my_sub.tested import func
def test_answer():
assert func(3) == 3
当我从命令行python __init__.py
运行代码时,它打印6,这是正确的。
我想在inc()
文件中测试函数tested.py
。
1.我安装了pytest
包作为测试框架,
2.创建类似于名为test_main.py
的教程this artice中的测试文件。
3.添加__init__.py
,其中包含查找根目录路径的代码,并将其添加到sys.path
它运作良好,但后来我读到这不应该这样做。但是应该怎么做呢?我很难从一些经过测试但不使用init文件的github存储库中读取一些经过单元测试的代码。 (其中一个是here)我找不到任何暗示如何正确使用它的线索。
我也尝试过这种方式使用相对导入
from ..my.main import func
但它会抛出ValueError: attempted relative import beyond top-level package.
这没关系。但无论如何我试过了。
现在我不知道该怎么做。有关导入的教程通常说明我们应该将导入模块的路径添加到sys.path
(如果它们已经不存在)但是如果不存在可以保存的init
文件,我应该怎么做呢?功能?