我有这个目录结构。 在我的项目根目录中,我有一个主要的python文件,例如main.py.同样在这个根目录中有一个名为Tests的文件夹。此测试文件夹将包含一系列测试文件(仅在运行时知道),例如test1.py,test2.py等... 在我的测试文件中,例如Test1.py我有这种结构:
from TestBase import TestBase
class Test1(TestBase):
def TestFunction(self):
# do_some_stuff
在我的main.py中,我想调用此TestFunction()。我该怎么做?
# use sys.path.append() to add Tests directory our path
x= import(testfilename)
result = x.TestFunction() # something like this method from class in testfilename
答案 0 :(得分:1)
从Python 2.7开始,您需要的功能包含在内置的unittest
模块中。对于早期版本的Python,此模块已经以unittest2
。
如果出于某种原因想要推出自己的测试发现,这是一个基本方法:
import glob
import sys
import TestBase
sys.path.append("tests")
for path in glob.iglob("tests/*.py"):
module = __import__(os.path.basename(path)[:-3])
for name in dir(module):
obj = getattr(module, name)
if isinstance(obj, type) and issubclass(obj, TestBase.TestBase):
test = obj()
test.TestFunction()
答案 1 :(得分:0)
我不确定你想如何在运行时添加测试文件..我会试试这个,
try: import Test.test1 as t1 test= True; except ImportError: test = False ;
您可以使用系统调用在运行时找不到可用的测试文件。然后尝试使用for循环导入它们,如上所示。
答案 2 :(得分:0)
我认为你需要做这样的事情 如果testfilename在/ test / dir
中m = __import__('test.testfilename')
t = m.Test1()
x = t.TestFunction()
让我知道它是否有效