import inspect
"""
动态获取用例名称,并赋值给用例调用类中的某个固定参数pvid
通过装饰器的调用,可以在用例执行时将用例名称动态传给pvid,同时,如果用例名称不满足要求,pvid保持默认值pvid_test
"""
def get_current_function_name():
"""
inspect.stack():动态获取运行的函数名
"""
return inspect.stack()
def wrap_class(cls):
"""
函数装饰类装饰器
:param cls:
:return:
"""
def inner(**kwargs):
res = get_current_function_name()
func_names = [res[2][3], res[1][3], res[0][3]]
print(func_names)
case_name = ''
for func_name in func_names:
if func_name.startswith('test_'):
case_name = func_name
break
if case_name.startswith('test_'):
return cls(pvid=case_name)
else:
return cls(**kwargs)
return inner
@wrap_class
class ModuleProto:
"""
测试用例中调用的类
"""
def __init__(self, **kwargs):
self.proto = {
"pvid": "pvid_test"
}
if "pvid" in kwargs.keys():
self.proto["pvid"] = kwargs["pvid"]
def test_case_1():
"""
测试用例
:return:
"""
module_proto = ModuleProto()
print("pvid: ", module_proto.proto['pvid'])
if __name__ == '__main__':
test_case_1()