简单介绍:
说明: 此模块提供了一系列自省函数,可获取模块/类/方法/函数/traceback/帧对象/代码对象的信息
快速安装:
内置模块
测试相关:
inspect.ismodule(object) -> True/False
说明: 判断object是否为模块
inspect.isclass(object) -> True/False
说明: 判断object是否为类
inspect.ismethod(object) -> True/False
说明: 判断object是否为方法
inspect.isfunction(object) -> True/False
说明: 判断是否为函数
inspect.isgeneratorfunction(object) -> True/False
说明: 判断是否为生成器函数
inspect.isgenerator(object) -> True/False
说明: 判断是否为生成器
inspect.isbuiltin(object) -> True/False
说明: 是否为内置对象
inspect.isabstract(object) -> True/False
说明: 是否为抽象基类
源码相关:
inspect.getdoc(object) -> str
说明: 获取object的documentation信息
inspect.getfile(object) -> str
说明: 获取object的原始加载文件
堆栈相关:
inspect.stack([context]) -> list
说明: 获取运行时基于上下文的堆栈信息
最佳实践:
1. 今天老大安排测试环境下RPS业务服务功能/性能测试,由于RPS开发初期版本迭代更新很快,希望快速定位自动化测试插件异常点,方便快速定位问题,但部分依赖多个子服务的插件,在测试报告中需要包含目标主机/插件名称/函数名称/异常行数/异常信息等字段,而inspect内置模块刚好可以提取运行时堆栈信息~
#!/usr/bin/env python # -*- coding: utf-8 -*- """ # # Authors: limanman # OsChina: http://xmdevops.blog.51cto.com/ # Purpose: # """ # 说明: 导入公共模块 import inspect import pprint # 说明: 导入其它模块 def rps_device(): try: raise ValueError, ‘with value error. ‘ except ValueError, e: return inspect.stack()[0][-4:-2], e.message return def rps_client(): try: raise ValueError, ‘with value error.‘ except ValueError, e: return inspect.stack()[0][-4:-2], e.message return def rps_testing(add_data=None): exec_ret_dicts = { ‘status‘: 0, ‘errors‘: ‘{0[0][1]}: {0[0][0]} with error ## {0[1]}‘ } result = rps_device() or rps_client() exec_ret_dicts[‘status‘] = 0 if not result else 1 exec_ret_dicts[‘errors‘] = exec_ret_dicts[‘errors‘].format(result) return exec_ret_dicts if __name__ == ‘__main__‘: pprint.pprint(rps_testing())
本文出自 “满满李 - 运维开发之路” 博客,请务必保留此出处http://xmdevops.blog.51cto.com/11144840/1871279
基础入门_Python-模块和包.运维开发中inspect自省模块的最佳实践?
原文地址:http://xmdevops.blog.51cto.com/11144840/1871279