def get_logger(name): logger = logging.getLogger(name) logger.setLevel(config.get('log', 'level')) #读取配置文件中日志级别 ''' 日志输入的格式 ''' fmt = "%(asctime)s - %(name)s - %(levelname)s - %(message)s - [%(filename)s:%(lineno)d ]" formatter = logging.Formatter(fmt=fmt) #格式化日志输出 ''' 输出到控制台 ''' console_handler = logging.StreamHandler() # 控制台 # 把日志级别放到配置文件里面配置--优化 console_handler.setLevel(config.get('log', 'level')) console_handler.setFormatter(formatter) ''' 输出到日志文件中 contants获取存放日志文件的路径以及存放日志的文件名 ''' file_handler = logging.FileHandler(contants.log_dir + '/case.log') # 把日志级别放到配置文件里面配置 file_handler.setLevel(config.get('log', 'level')) file_handler.setFormatter(formatter) #加载日志到控制台 logger.addHandler(console_handler) #加载日志到日志文件中 logger.addHandler(file_handler) return logger
def html_test(self): discover = unittest.defaultTestLoader.discover(contants.case_dir, "test_*.py") with open(contants.report_dir + '/report.html', 'wb+') as file: runner = HTMLTestRunnerNew.HTMLTestRunner( stream=file, title=config.get('HTMLTest', 'title'), description=config.get('HTMLTest', 'description'), tester=config.get('HTMLTest', 'tester')) runner.run(discover)
def request(self, method, url, data=None, json=None): method = method.upper() #将method强制转换成大写 # 判断数据类型 if type(data) == str: data = eval(data) # 拼接URL url = config.get('api', 'pre_url') + url logger.debug('请求url ',url) logger.debug('请求data ',data) # 判断调用接口的方式 if method == "GET": resp = self.session.request(method= method,url=url, params=data) # reso是request对象 elif method == "POST": if json: resp = self.session.request(method=method,url=url, json=json) else: resp = self.session.request(method=method,url=url, data=data) else: resp=None logger.debug("http_request,未找到请求的方法!---60行") print('http_request类,请求response ', resp.text) return resp
def request(self,method,url,data=None,json=None,cookies = None): method = method.upper() #强制转换成大写 upper大写,lower 小写 #判断数据类型 Str 转成字典 if type(data) == str: data = eval(data) #拼接URL url = config.get('api','pre_url')+url logger.debug('请求url ',url) logger.debug('请求data ',data) #判断调用接口的方式 if method == "GET": resp = requests.get(url,params=data,cookies=cookies) #reso是request对象 elif method == "POST": if json: resp = requests.post(url,json=json,cookies=cookies) else: resp = requests.post(url,data=data,cookies=cookies) else: resp = None logger.debug("UN-support method") return resp
def __init__(self): # 1、建立连接,数据库的连接信息 # host = 'test.lemonban.com' # user = '******' # password = '******' # port = 3306 ''' 调用config类中的config,使配置连接地址进行参数化。 ''' host = config.get('mysql','host') user = config.get('mysql', 'user') password = config.get('mysql','password') port = int(config.get('mysql', 'port')) # print(host,user,password,port) self.mysql = pymysql.connect(host=host, user=user, password=password, port=port,charset='utf8') # 2、新建一个查询页面 # self.cursor = self.mysql.cursor() # 新建一个游标对象,记录sql的作用 self实例属性,其他方法可以使用 # 新建一个游标对象,记录sql的作用 self实例属性,其他方法可以使用 # 创建一个字典类型的游标 self.cursor = self.mysql.cursor(pymysql.cursors.DictCursor)
def replace(data): p = '#(.*?)#' # 正则表达式 while re.search(p, data): # print('context类:替换之前的data ', data) m = re.search( p, data) # 查找在data中,查找p 从任意位置开始找,找到第一个就返回Match object,如果么有就返回None g = m.group(1) # 拿到参数化的key try: v = config.get('data', g) # 根据Key取配置文件里面的值 except configparser.NoOptionError as e: if hasattr(Context, g): v = getattr(Context, g) else: print("context 找不到参数化的值") raise e print('context.v:{}'.format(v)) # 替换后的内容,继续用data接收 data = re.sub(p, v, data, count=1) # sub,查找并替换,pattern count有多少替换多少 return data
from Common.config import config #原本字符,元字符 data = '{"mobilephone":"#normal_user#","pwd":"#normal_pwd#"}' p = '#(.*?)#' #正则表达式 # m = re.search(p,data) #查找 : 在data中,查找p 从任意位置开始找,找到第一个就返回Match object,如果么有就返回None # print(m.group(0)) #返回表达式 和 组里面的内容 # print(m.group(1)) #只返回 指定组 的内容 # ms = re.findall(p,data) #查找全部,返回列表 # # print(ms) # g = m.group(1) #拿到参数化的key # v = config.get('data',g) #根据Key取配置文件里面的值 # print(v) # data_new = re.sub(p,v,data,count=1) #sub,查找并替换,pattern count有多少替换多少 # print(data_new) #如果要匹配多次,替換多次,使用循环来解决 while re.search(p, data): print('替换之前的data ', data) m = re.search( p, data) #查找 : 在data中,查找p 从任意位置开始找,找到第一个就返回Match object,如果么有就返回None g = m.group(1) # 拿到参数化的key print(g) v = config.get('data', g) # 根据Key取配置文件里面的值 # print(v) # 替换后的内容,继续用data接收 data = re.sub(p, v, data, count=1) # sub,查找并替换,pattern count有多少替换多少 print('替换之后的data ', data)