接口自动化测试 unittest+request+excel
Posted hemingwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口自动化测试 unittest+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()
查看日志输出: