如果您正在编写库或应用程序,则单元测试文件会放在哪里?
将测试文件与主应用程序代码分开是很好的选择,但是将它们放在应用程序根目录内的“ tests”子目录中是很尴尬的,因为这样会使导入要测试的模块更加困难。
这里有最佳实践吗?
#1楼
正如杰里米·坎特雷尔(Jeremy Cantrell)所述,我也倾向于将单元测试放在文件本身中,尽管我倾向于不将测试功能放在主体中,而是将所有内容放在一个文件中。
if __name__ == '__main__':
do tests...
块。 最后,将文档添加到文件中作为“示例代码”,以说明如何使用要测试的python文件。
我应该补充一点,我倾向于编写非常紧凑的模块/类。 如果您的模块需要大量测试,则可以将它们放在另一个测试中,但是即使如此,我仍然要添加:
if __name__ == '__main__':
import tests.thisModule
tests.thisModule.runtests
这使任何阅读您的源代码的人都知道在哪里可以找到测试代码。
#2楼
我们用
app/src/code.py
app/testing/code_test.py
app/docs/..
在每个测试文件中,我们在sys.path
插入../src/
。 这不是最好的解决方案,但可以。 我认为,如果有人想出了java中的maven之类的东西,无论您从事什么项目,它都会为您提供可以正常工作的标准约定,那就太好了。
#3楼
根据我在Python中开发测试框架的经验,我建议将python单元测试放在单独的目录中。 保持对称目录结构。 这将有助于仅打包核心库而不打包单元测试。 下面是通过示意图实现的。
<Main Package>
/ \
/ \
lib tests
/ \
[module1.py, module2.py, [ut_module1.py, ut_module2.py,
module3.py module4.py, ut_module3.py, ut_module.py]
__init__.py]
这样,当您使用rpm打包这些库时,您可以仅打包主库模块(仅)。 这有助于维护性,尤其是在敏捷环境中。
#4楼
仅1个测试文件
如果只有1个测试文件,建议将其放在顶层目录中:
module/
lib/
__init__.py
module.py
test.py
在CLI中运行测试
python test.py
许多测试文件
如果有很多测试文件,请将其放在tests
文件夹中:
module/
lib/
__init__.py
module.py
tests/
test_module.py
test_module_function.py
# test_module.py
import unittest
from lib import module
class TestModule(unittest