Python Pytest-项目结构和导入语句

时间:2018-10-02 09:33:04

标签: python python-import pytest python-unittest directory-structure

假设以下标准项目结构

- project
-- src
---- __init__.py
---- script1.py
---- script2.py
---- module
---- __init__.py
------ helper.py
-- test
---- __init__.py
---- test_script1.py
---- test_script2.py
---- module
---- __init__.py
------ test_helper.py

script1.py中的以下导入

import script2
from module import helper

和在test_script1.py

from src import script1

使用以下项目从项目目录调用测试

python -m pytest tests

失败,因为当script1.py尝试导入例如script2,找不到模块,因为root是不包含src的project / test,抛出类似

的东西
 ModuleNotFoundError: No module named 'script2'

通过以下方式修改script1.py

from src import script2
from src.module import helper

将在测试时修复导入,但是在尝试运行其根文件夹为src(不包含其自身)的script1时,导入会中断。

我认为这是标准情况,但是我找不到一个干净的解决方案(意味着依赖sys.path.append('src'))。

中指出的解决方案 Running unittest with typical test directory structure 不考虑src文件夹中的导入。

目前,我的解决方法是将测试文件夹放在src中

- project
-- src
---- __init__.py
---- script1.py
---- script2.py
---- module
---- __init__.py
------ helper.py
---- test
------- __init__.py
------- test_script1.py
------- test_script2.py
------ module
------ __init__.py
-------- test_helper.py

并且具有例如test_script1.py以下导入

import script1

但是我想保留开头提到的文件夹结构。

任何建议我都会想起你。

0 个答案:

没有答案