我有一个关于Python包和测试问题。我使用编写的应用程序的 WX蟒和具有用于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部件我想,除了单元测试(和它们不会造成任何问题),具有用于每个视图一个小的“测试” /例子。也就是说,对于logpane,我想有小的可运行的例子,将劳克表示视图裸骨应用到测试该布局是确定等 我开始的方式是,我有一个

if __name__ == "__main__":
    # create some small window and a wx app
    # instanciate the panel and launch the app
    pass

在面板的实际执行文件/查看本身。这创造了奇迹的logpane。我可以运行该文件独立看看在视图,并认为它在一起。

不过,当然战略砸开了的 mainframe.py 的自依赖性的 logpane.py 的无法解析。这一点,因为当前的主模块的就是的mainframe.py和必由之路mainframe.py可以达到utilviews包是如果主/推出模块是在树进一步向上。

那么,如何组织这些类型的测试?单元测试我使用的鼻子的这是很好的,自鼻子是每mainapp文件夹中启动需要照顾的问题(因此所有intrapackage引用作品)。但这些测试就像一个小型的独立程序。我根本就不会弄乱这些蟒蛇文件夹mainapp(会有很多这样的文件)。还有没有其他的方法可以让我做到这一点?

任何输入是有价值的。

谢谢, 里卡德

有帮助吗?

解决方案

您可以使用PYTHONPATH。它设置为您的主项目目录,执行你的测试文件之前。然后,它就能解决你所有的进口,就像如果你想从该目录执行。

$ find
.
./test
./test/test.py
./some
./some/__init__.py

$ cat some/__init__.py 
x = 10

$ cat test/test.py 
import some
print some.x

$ cd test
$ export PYTHONPATH=..
$ python test.py
10
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top