Esempio n. 1
0
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
Esempio n. 2
0
    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)
Esempio n. 3
0
    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
Esempio n. 4
0
    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
Esempio n. 5
0
   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)
Esempio n. 6
0
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
Esempio n. 7
0
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)