我有关于 python 包和测试的问题。我正在使用wx python编写一个应用程序,并且 gui 部分具有以下基本文件夹/包结构。mainframe.py窗口依赖于logpane.py面板,可以使用mainframe.py中的绝对导入轻松导入:
import guiapp.utilviews.logpane
文件夹/包布局:
mainapp
- main.py
guiapp
- __init__.py
utilviews
- __init__.py
- logpane.py
- other stuff...
mainview
- __init__.py
- mainframe.py
- other stuff here...
other views...
但是,对于应用程序的 gui 部分,除了单元测试(它们没有问题)之外,我还希望每个视图都有一个小的“测试”/示例。也就是说,对于日志窗格,我想要一个可运行的小型示例,它将启动一个裸露的应用程序,显示测试布局是否正常等的视图。我开始的方式是我有一个
if __name__ == "__main__":
# create some small window and a wx app
# instanciate the panel and launch the app
pass
在面板/视图本身的实际实现文件中。这为日志窗格创造了奇迹。我可以单独运行文件来查看视图并查看它是否结合在一起。
但是,由于无法解决对logpane.py的依赖关系,因此mainframe.py的策略当然失败了。这是因为当前的主模块是mainframe.py 并且 mainframe.py 可以访问 utilviews 包的唯一方法是主/启动模块是否在树中更靠前。
那么如何构建这些类型的测试呢?对于单元测试,我使用nose,它很好并且可以解决问题,因为nose 是根据mainapp 文件夹启动的(因此所有包内引用都有效)。但是这些测试就像小的独立程序。我根本不能用这些 python 文件弄乱 mainapp 文件夹(会有很多这样的文件)。有没有其他方法可以做到这一点?
任何输入都是有价值的。
谢谢,里卡德