我想用单元测试和包创建一个pybuilder项目。例如,修改了simple python app示例,将“helloworld”移到包“hello”。在
我的第一反应是将包结构与“main”和“unittest”源相匹配:
+---src
+---main
| \---python
| \---hello
| helloworld.py
| __init__.py
|
\---unittest
\---python
\---hello
helloworld_tests.py
__init__.py
由于“hello”包发生冲突,此操作不起作用。在
^{pr2}$我看到pybuilder本身只是跳过unittests中的顶层pybuilder包,但是如果有多个顶级包,则不会这样做。在
我的第二个猜测是为unittests创建额外的顶级包。在
\---unittest
\---python
\---tests
| __init__.py
\---hello
helloworld_tests.py
__init__.py
在包中组织python测试是否有更好的解决方案或既定惯例?在
也许这部片子没有什么新鲜事,但我只想把我能想到的所有选项都集中在一个地方:
1)只需将
_tests
附加到顶级包的名称在
src/test/python
中镜像src/main/python
的结构最简单的方法是在顶级包的名称后面加上_tests
。例如,如果我只有一个顶层包rootPkg
,那么我可以将相应的rootPkg_tests
添加到test/
子目录中:这似乎与pybuilder0.11.15和}中,如果您打算使用多个测试框架,您可能不应该这样做)。在
unittest
插件配合得很好(请注意,我已经偏离了PyBuilders的约定,将测试放在test
而不是{2)如果只有一个包:像PyBuilder一样做
PyBuilder本身是用PyBuilder构建的。这是它的源目录的样子(大大减少了,省略了不必要的细节):
^{pr2}$如果我理解正确,
unittest
中的树镜像src
中的树,但是省略了顶层包pybuilder
的目录。这就是你在问题中描述的第一个解决办法。缺点是如果有多个顶级包,它就不能真正工作。在3)添加一个额外的
tests
顶级包这就是您提出的解决方法:镜像
main
中的树,但将所有内容包装在一个额外的tests
-包中。这适用于/src/main/python
中的许多顶级包,并防止任何包名冲突。在我不知道有什么习俗。如果你对这件事有意见,请投下面的一条评论。在
相关问题 更多 >
编程相关推荐