我正在使用 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 解释器会话并执行“导入此”:)
即:简而言之,一次my_app/__init__.py
找到后,它不会尝试解析 PYTHONPATH 中任何其他位置的 my_app 子文件夹
所以,你有两种方法......通常我所做的是将测试靠近 _tests 包中的模块。 IE。:
/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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)