Python 测试套件的结构
在下面提到的目录结构中,我试图为一个测试模块构建一个python平台 在/opt/site目录中,我还有一个Python 测试套件的结构,python,Python,在下面提到的目录结构中,我试图为一个测试模块构建一个python平台 在/opt/site目录中,我还有一个\uuuu init\uuuu文件和另一个文件suite.py以及目录dir1、dir2 在dir1、dir2目录中,我有以下文件\uuuu init\uuuu和execute.py 我的问题是suite.py上的代码应该是什么,如果我在suite.py中提到dir1,那么应该执行dir1/execute.py,如果提到dir2,那么应该执行dir2/execute.py,或者如果两者都提
\uuuu init\uuuu
文件和另一个文件suite.py以及目录dir1、dir2
在dir1、dir2目录中,我有以下文件\uuuu init\uuuu
和execute.py
我的问题是suite.py上的代码应该是什么,如果我在suite.py中提到dir1,那么应该执行dir1/execute.py,如果提到dir2,那么应该执行dir2/execute.py,或者如果两者都提到,那么应该执行dir1/execute.py和dir2/execute.py
还有如何从suite.py调用dir1/execute.py中的特定函数
有人能告诉我如何实现这一点吗?我假设您的目录结构如下:
-+- dir1
| |
| +- execute.py
|
+- dir2
| |
| +- execute.py
|
+- __init__.py
|
+- suite.py
from dir1 import execute as execute1
from dir2 import execute as execute2
解决方案
如果我的假设是正确的,并且您的目录结构与上面提到的目录结构相匹配,那么您可以将空的\uuuuu init\uuuuuu.py
文件放在dir1
和dir2
目录中,然后在suite.py
中执行您想要的文件:
-+- dir1
| |
| +- execute.py
|
+- dir2
| |
| +- execute.py
|
+- __init__.py
|
+- suite.py
from dir1 import execute as execute1
from dir2 import execute as execute2
这将导入两个execute.py
文件,这意味着它们将被执行。要再次执行已导入的模块,只需对表示模块的变量使用reload()
(例如reload(execute1)
)
解释
通过将\uuuu init\uuuuuupy
放在dir1
和dir2
目录中,您告诉Python应该将dir1
和dir2
视为模块。因为它们是模块,所以您可以简单地导入它们的子模块(两者最初的名称都是execute
,所以我以更独特的方式命名它们)
它有帮助吗?为测试模块构建python平台到底意味着什么?您是否有要测试的模块或要构建通用测试框架?是的,您希望构建通用框架,以便人们以后可以从suite.py添加自己的模块。请让我知道这一点。您知道已经存在的大量工具吗?)unittest,py.test,nose,他们已经做了你想做的,也许其他人也做了。这太通用了,我想从头开始做。你能解释一下吗。。要再次执行已导入的模块,只需在表示模块的变量上使用reload()(例如reload(execute1))。如果任何execute.py文件中发生更改,会发生什么情况?如何编译它。因此,有必要将init文件放入dir1、dir2Ad中。1.要重新加载模块,您需要执行以下操作:例如重新加载(execute1)。为什么?因为如果某个模块已经被导入,它将不会被相同的
import
语句重新加载,您需要显式地执行此操作。公元2年。如果更改发生在主脚本执行期间,请参阅“Ad.1”。如果更改发生在执行suite.py
之前,那么它将自动完成(非常明显)。此外,也没有编译(除非您指的是自动创建.pyc
文件)。公元3年。是的,如果你想做对的话。您还可以使用execfile()
。你有什么问题吗?