您的位置:首页 > 运维架构

运维开发中inspect自省模块的最佳实践

2017-02-22 00:00 627 查看
简单介绍:

说明:此模块提供了一系列自省函数,可获取模块/类/方法/函数/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内置模块刚好可以提取运行时堆栈信息~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/env python

# -*- coding:utf-8 -*-

"""

#

# Authors:limanman

# OsChina:http://xmdevops.blog.51cto.com/[/code] 
# 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
&
3ff0
nbsp;
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://www.learnbo.com/

或关注我们的官方微博微信,还有更多惊喜哦~



本文出自 “满满李 - 运维开发之路” 博客,请务必保留此出处http://xmdevops.blog.51cto.com/11144840/1871279
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐