从导入的python文件中调用方法

时间:2011-11-01 11:47:51

标签: python oop class

我有这个目录结构。 在我的项目根目录中,我有一个主要的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    

3 个答案:

答案 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()

让我知道它是否有效

相关问题