gpt4 book ai didi

python - 在 pydev 中使用 unittest 在 Python 中对整个项目层次结构进行单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:13 25 4
gpt4 key购买 nike

我正在使用 unittest 模块对使用 Pydev 在包的层次结构中创建的一些 python 代码进行单元测试。当我尝试对实际源代码及其在 pydev 中的单元测试使用单独的源文件夹时出现问题。

project
|----src
| |----com
| | |----myself
| | | |----MyApplication
| | | | |----SampleFileToTest.py => The application file that I want to test
|----test
| |----com
| | |----myself
| | | |----MyApplication
| | | | |----TestTheSampleFileToTest.py => My test case file

当我试图分离层次结构时,我在引用测试文件中的应用程序文件时遇到了问题。是否可以采用 Junit 方式,即使用不同的源文件夹但保持相同的包名称?

最佳答案

这在 Python 本身默认情况下是不支持的(即:与 PyDev 无关)——我也有 Java 背景,所以,您可能需要在这里忘记一些 Java 概念:)

在 Python 中,只要找到包含 __init__.py 的文件夹,就不会再在其他路径中搜索该包。我认为 setuptools 有一些 hackery 来使它工作,我模糊地记得 Python 3 可能会添加一些支持,但到目前为止我不认为它通常被推荐......这与 Java 方法有很大不同 - 在Python,平面优于嵌套——也许你知道,但除此之外,只是为了好玩,启动一个 Python 解释器 session 并执行“导入这个”:)

即:简而言之,一旦找到 my_app/__init__.py,它就不会尝试解析 PYTHONPATH 中任何其他位置的 my_app 子文件夹

因此,您有 2 种方法...通常我所做的是在 _tests 包中将测试靠近模块。即:

/project
/project/src
/project/src/myapp
/project/src/myapp/__init__.py
/project/src/myapp/_tests
/project/src/myapp/_tests/__init__.py
/project/src/myapp/_tests/test_myapp.py

还有另一种方法(我必须说我不太喜欢这种方法,因为测试“感觉”与代码更加分离),将有一个单独的测试包:

/project
/project/src
/project/src/myapp
/project/src/myapp/__init__.py
/project/src/myapp_tests/__init__.py
/project/src/myapp_tests/test_myapp.py

关于python - 在 pydev 中使用 unittest 在 Python 中对整个项目层次结构进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9207748/

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