基础入门_Python-模块和包.运维开发中inspect自省模块的最佳实践?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础入门_Python-模块和包.运维开发中inspect自省模块的最佳实践?相关的知识,希望对你有一定的参考价值。

简单介绍:

说明: 此模块提供了一系列自省函数,可获取模块/类/方法/函数/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自省模块的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章

基础入门_Python-模块和包.运维开发中watchdog事件监视的最佳实践?

基础入门_Python-模块和包.运维开发中内建模块getopt的最佳实践?

基础入门_Python-模块和包.运维开发中chartdet编码检测的最佳实践?

基础入门_Python-模块和包.运维开发中日志模块logging的最佳实践?

Python基础入门- Python模块和包

Python基础入门学—单例异常模块和包