接口自动化测试 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()

查看日志输出:

技术图片

 

以上是关于接口自动化测试 unittest+request+excel的主要内容,如果未能解决你的问题,请参考以下文章

python3+requests+unittest:接口自动化测试

python+requests+unittest 搭建接口自动化测试框架

接口自动化测试 unittest+request+excel

Python+unittest+requests 接口自动化测试框架搭建 完整的框架搭建过程 实战

接口自动化测试(Python+Requests+Unittest)

接口自动化测试(Python+Requests+Unittest)