一个测试用例大致是这样的:
------------------------------------------
文件名:testcase1.py
------------------------------------------
内容:
class TestAddUser(BaseClass):
def __init__(self):
pass
def init(self):
pass
def run(self):
pass
def clean(self):
pass
......
-------------------------------------------
框架希望能够实例化测试用例文件(对应于testcase1.py)中定义的类(对应于TestAddUser ),文件名和类名都是用户自定义的,并通过一个xml配置文件告诉框架
python如何来实现这个功能?有没有类似 Java中的 Class.forName(String) ?
getattr(sys.modules[TestAddUser.__module__], "TestAddUser")().run()
pdvv(我爱花猫) ,类名是运行时才知道的
getattr返回的并非 TestAddUser 类的实例.
有没有知道module名和class名的字符串值后,获得该class的实例的函数啊?
如果类事例化不需要参数的话可以用eval,需要参数也可以,就是麻烦些.
a = eval("%s()" % cls_name)
# a is the instance of cls_name
我想这样调用,但是试过之后不成功,想再请教一下如何使用eval().
-----------------------------------------------
#文件 my_module.py:
class MyClass:
def func(self):
print 'ok'
-----------------------------------------------
#文件 main.py:
from my_module import *
#由于文件(模块)名和类名是运行时从配置文件获取的,所以必须是字符串
a = eval("%s" % "MyClass")
a.func()
-----------------------------------------------
问题解决了.
总结如下:
首先通过
getattr(sys.modules['moduleName'], 'className')
或者
eval('className')
来获取'类'的对象
然后通过new.instance(classObj)来实例化该类.
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 类似 有没有 文件 eval def self class TestAddUser 实例 |
注册
个人空间
