gpt4 book ai didi

python - 使用 src/package 目录结构运行 unittest

转载 作者:行者123 更新时间:2023-12-05 04:31:49 25 4
gpt4 key购买 nike

这个问题类似于this one ,但我的目录结构略有不同,我认为这是导致问题的原因。

我的结构如下:

project/
src/
mypackage/
module.py
tests/
tests_module.py
pyproject.toml
setup.cfg
etc.

主要区别在于我的包位于 src/ 下的子目录中。我读过几篇文章说这是一个很好的做法,因为它本质上会“强制”你安装包来测试它,就像用户一样......但这就是我似乎被卡住的地方。

当我尝试进行单元测试时,会发生以下情况:

% python -m unittest tests_module
E
======================================================================
ERROR: tests_module (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: tests_module
Traceback (most recent call last):
File "/usr/local/Cellar/python@3.9/3.9.12/Frameworks/Python.framework/Versions/3.9/lib/python3.9/unittest/loader.py", line 154, in loadTestsFromName
module = __import__(module_name)
File "project/tests/tests_module.py", line 3, in <module>
from mypackage.module import func
ModuleNotFoundError: No module named 'mypackage'


----------------------------------------------------------------------
Ran 1 test in 0.000s

这是我的 tests_module.py 文件:

import unittest

from mypackage.module import func


class TestCore(unittest.TestCase):

def test_func(self):
"""
Test that func returns the parameter it receives
"""
self.assertEqual(func(1), 1)


if __name__ == '__main__':
unittest.main()

(测试文件可能还有其他问题,这只是一个开始,但现在我需要解决导入问题)。

我发现的一些解决方案建议在 setup.py 中放置一些东西来安装用于此目的的包,但我没有 setup.py 因为我似乎给人的印象是指定设置信息的一种“旧”方式,我正在努力避免它。

非常感谢任何关于最佳实践的帮助或建议!

最佳答案

我想我可能找到了答案......

我认为我需要做的是以可编辑的形式安装我的包(使用 python -m pip install -e .)

之后测试运行良好!我认为这就是人们所说的“它迫使您安装软件包以对其进行测试”的意思。

关于python - 使用 src/package 目录结构运行 unittest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71773830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com