gpt4 book ai didi

python - python 和 GUI 测试中的包内引用

转载 作者:行者123 更新时间:2023-11-28 20:34:16 24 4
gpt4 key购买 nike

我有关于 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 部分,除了单元测试(它们不会造成问题)之外,我还想为每个 View 提供一个小的“测试”/示例。也就是说,对于日志 Pane ,我想要一个小的可运行示例,它将启动一个裸骨应用程序,显示 View 以测试布局是否正常等。我开始的方式是我有一个

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

在面板/ View 本身的实际实现文件中。这为日志 Pane 创造了奇迹。我可以单独运行该文件以查看 View 并查看它是否结合在一起。

当然,mainframe.py 的策略失败了,因为无法解决对 logpane.py 的依赖。这是因为当前主模块 mainframe.py 并且 mainframe.py 可以到达 utilviews 包的唯一方法是主/启动模块是否在树中更靠上。

那么我该如何构建这些类型的测试呢?对于单元测试,我使用 nose 这很好并且可以解决问题,因为 nose 是根据 mainapp 文件夹启动的(因此所有 intrapackage 引用都有效)。但这些测试就像小型独立程序。我不能用这些 python 文件弄乱 mainapp 文件夹(会有很多这样的文件)。有没有其他方法可以做到这一点?

任何输入都是有值(value)的。

谢谢,瑞卡德

最佳答案

您可以使用 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

关于python - python 和 GUI 测试中的包内引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2536335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com