在 Python 中构建单元测试的最简洁方法

问题描述 投票:0回答:1

我通常以这种方式构建我的项目:

root
  src
    __init__,py
    main.py
    utils.py
    xyz.py
  tests
    __init__.py
    test_main.py
    test_utils.py
    test_xyz.py
  README.md
  LICENSE
  Other stuff...

在测试中,我导入需要使用

from src.main import my_function

等导入来测试的函数

然后使用

python -m unittest discover

从根运行测试

这很有用……有点。如果

main.py
导入
src
包中的其他模块(例如
import utils
),则测试会崩溃并出现 ImportError。原因是unittest将启动目录添加到PATH中,因此它识别
src.main
,但不识别其中的相对导入。

我找到的解决方案是在

test/__init__.py
中插入这样的语句:

import sys
sys.path.append("./src")

这会将整个 src 文件夹添加到 PYTHONPATH 中。它有效,但我觉得这很丑陋。还有哪些其他可用的解决方案?检查类似的问题,我没有找到允许运行测试并执行主包而无需每次更改代码的解决方案...

有什么想法吗?谢谢!

python python-unittest
1个回答
0
投票

我总是向人们指出Python 打包用户指南中的打包建议。创建

pyproject.toml
文件支持您对包执行
pip install
。在开发过程中,您可以在开发模式中进行安装。 这将允许您的测试以熟悉的 Python 风格导入函数:

from <your_package>.main import my_function
from <your_package>.utils import my_util_func

如果您这样做,则无需摆弄路径设置

© www.soinside.com 2019 - 2024. All rights reserved.