用python做自动化测试--logging 和ConfigParser 模块

时间:2021-08-28 17:48:44

      在写“用python做测试” 的系列文章时,发现很多地方用到了logging和ConfigParser 模块,没有这两个模块的话,很多地方用户估计无法调试,所以还是有必要先介绍下这个2个模块的使用,熟悉java的很清楚log4j的输出。 输出信息很详细,格式可配置, 还可以定义不同log级别,方便调试和发布。ConfigParser  解析,读写ini格式的文件。

   

      看例子吧,比较直观。

#common.py

#!/usr/bin/env python
#coding=utf-8

import os,logging,ConfigParser


def load_config(file_name):
'''
Use ConfigParser to parse below configuration file:
[selection]:
option:value
'''
config = ConfigParser.ConfigParser()
try:
if os.path.exists(file_name):
config.read(file_name)
return config
except:
file_name," is not exit"


def init_log(log_level,log_path):
#log leverl value: CRITICAL 50; ERROR 40; WARNING 30; INFO 20; DEBUG 10, NOSET 0;
logger = logging.getLogger()

hdlr = logging.FileHandler(log_path)
formatter = logging.Formatter('%(asctime)s [%(levelname)-8s %(module)s:%(lineno)d] %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(log_level)

return logger

if __name__=="__main__":
log=init_log(0,"monitor.log")
monitor_cfg=load_config("monitor.cfg")
for section in monitor_cfg.sections():
log.info("section is "+section)
if section=='sys':
log.debug("monitor ip:"+monitor_cfg.get(section,'ip'))



#monitor.cfg

[sys]
#monitor_type=local or remote, if the value is local, the ip/account/password are not useful
monitor_type=remote
ip:192.168.1.2
account:root
password:root123




[memory]
command: top | head -5 |grep -i memory
# interval unit second
duration: 10


[cpu]
command: sar 1 1 |tail -1
interval: 10


把monitor.cfg保存到common.py目录下,运行common,py,输出结果

2012-11-19 16:55:01,368 [INFO     common:38] section is sys
2012-11-19 16:55:01,369 [DEBUG    common:40] monitor ip:192.168.1.2
2012-11-19 16:55:01,369 [INFO     common:38] section is cpu
2012-11-19 16:55:01,369 [INFO     common:38] section is memory


从输出信息里可以很方便的看到这个log在那个模块在第几行输出的,common:38 , 在common.py模块里面第38行输出的log