在Python和GUI测试封装内引用
-
22-09-2019 - |
题
我有一个关于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
不隶属于 StackOverflow