接口自动化测试 python+request+excel(八)

完善接口自动化测试框架,加入日志模块

#!/usr/bin/env python3
# -*-coding:utf-8-*-
# __author__: hunter

import logging
import os
import time



class Logger:
    def __init__(self, loggername):
        # 创建一个logger
        self.logger = logging.getLogger(loggername)
        self.logger.setLevel(logging.DEBUG)

        # 创建一个handler,用于写入文件
        rq = time.strftime('%Y%m%d', time.localtime(time.time()))  # 给文件名加上时间
        log_path = os.path.dirname(os.path.abspath('.')) + '/logs/'  # 指定文件输出路径,注意logs是一个文件夹,
        logname = log_path + rq + 'test.log'  # 指定输出的日志文件名
        fh = logging.FileHandler(logname, encoding='utf-8')  # 指定utf-8格式编码,避免输出的日志文本乱码

        fh.setLevel(logging.DEBUG)

        # 创建一个handler,用于将日志输出到控制台
        ch = logging.StreamHandler()
        ch.setLevel(logging.DEBUG)

        # 定义handler的输出格式
        formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')
        fh.setFormatter(formatter)
        ch.setFormatter(formatter)

        # 给logger添加handler
        self.logger.addHandler(fh)
        self.logger.addHandler(ch)

    def get_log(self):
        """定义一个函数,回调logger实例"""
        return self.logger


if __name__ == '__main__':
    t = Logger("hunter").get_log().debug("User %s is loging" % 'jeck')

打开日志文件:

 

 

 

 在主函数中调用日志模块:

#!/usr/bin/env python3
# -*-coding:utf-8-*-
# __author__: hunter

from conn.run_demo import RunMain
from interface.tool.handle_excel import *
from interface.tool.logger import Logger

import json


class RunTestCase:
    def __init__(self):
        self.Runmain = RunMain()  # 实例化调用get/post请求基类
        self.data = HandleExcel()  # 实例化操作Excel文件类
        self.logger = Logger(__name__)

    def go_run(self):
        rows_count = self.data.get_rows()  # 获取Excel行数
        for i in range(1, rows_count):  # 利用行数进行迭代处理每个接口
            url = self.data.get_value(i, get_url())  # 循环获取URL的值
            method = self.data.get_value(i, get_mothod())  # 循环获取method的值
            print(self.data.get_value(i, get_params()))
            data = json.loads(self.data.get_value(i, get_params()))  # 循环获取请求参数
            expect = self.data.get_value(i, get_expectvalue())  # 循环获取期望输出
            is_run = self.data.get_value(i, get_priority())  # 获取是否运行,即判断Excel中priority是不是为“high"
            if is_run == 'high':
                res = self.Runmain.run_main(url, method, data)  # 调用主函数,res就是返回的参数
                self.logger.get_log().debug('第' + str(i) + '个接口的返回结果为:%s', res)  # 日志:输出接口响应内容
                self.data.write_value(i, get_actualvalue(), res)  # 将实际结果写入Excel中
                if expect in res:  # res返回的内容是否包含expect,是否与期望一致
                    # print('测试通过')
                    self.logger.get_log().error('第' + str(i) + '接口测试通过')
                    self.data.write_value(i, get_resultvalue(), 'pass')  # 调用写入数据方法,将结果写进Excel
                else:
                    # print("测试失败")
                    self.logger.get_log().info('第' + str(i) + '接口测试失败')
                    self.data.write_value(i, get_resultvalue(), 'fail')


if __name__ == '__main__':
    run = RunTestCase()
    run.go_run()

查看日志输出:

 

posted on 2019-09-27 10:03  逗芽  阅读(399)  评论(0编辑  收藏  举报

导航