通过装饰器实现获取当前执行的用例名称
Posted jiyanjiao-702521
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过装饰器实现获取当前执行的用例名称相关的知识,希望对你有一定的参考价值。
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()
以上是关于通过装饰器实现获取当前执行的用例名称的主要内容,如果未能解决你的问题,请参考以下文章
pytest接口自动化测试框架 | 使用装饰器修饰需要运行的用例