基于Unittest下的BeautifulReport包的二次开发

一、BeautifulReport包BeautifulReport包是基于Python的Unittest进行二次开发的测试报告的包,它生成的测试报告要比原生测试报告要美观很多,下面给大家看一下BeautifulReport生成的测试报告:从整体来看,我们可以看到以下内容:测试报告的title、用例总数、通过数、失败数、跳过数、开始时间、执行时间、用例分布图等 每条用例的类名、te...
摘要由CSDN通过智能技术生成

一、BeautifulReport包

BeautifulReport包是基于Python的Unittest进行二次开发的测试报告的包,它生成的测试报告要比原生测试报告要美观很多,下面给大家看一下BeautifulReport生成的测试报告:

从整体来看,我们可以看到以下内容:

  • 测试报告的title、用例总数、通过数、失败数、跳过数、开始时间、执行时间、用例分布图等
  • 每条用例的类名、test函数方法名称、用例描述、运行时长、运行结果以及操作(在操作里面其实就是记录了用例运行的日志信息)

二、BeautifulReport包二次开发

1、二次开发目的

针对BeautifulReport包进行二次开发,主要的目的如下:

  • 在测试报告中新增Http响应状态码,每条用例对应能够显示
  • 当Http响应状态码为200或者是201时,显示为绿色
  • 当Http响应状态码为Null时(即没有获取到响应码),显示为灰色
  • 当Http响应状态码不为上面两个情况时,显示为红色

2、开发方案

2.1、逻辑梳理概要

通过查阅源代码,我们可以知道程序是先获取到test用例的相关信息,然后加载到一个result_list列表中,并将result_list作为一个value传到了字典self.FIELDS的key【testResult】中,然后self.FIELDS会直接下入到template文件,通过js自动将test用例信息展示出来

2.2、二次开发思想

  • 测试用例当中需要返回接口响应状态码到控制台中,并设计好统一的格式,方便后续进行正则获取
  • 在获取到测试用例日志信息时,通过正则表达式将接口响应状态码抽离出来,赋值给self.httpcode类变量
  • 在数据加载result_list时新增加载self.httpcode类变量(需要配置对应的key值)
  • 修改template模板文件源码以及JS源码,通过拿到result_list数据写入到模板文件当中,从而生成html测试报告

3、梳理代码逻辑(程序流转是从下往上流转)

1、运行生成测试报告的函数时,程序会将每条用例放到程序进行执行,会获取到用例的类名、函数名、以及用例介绍等信息

2、当用例为成功用例时,会走addSuccess函数,该函数主要是获取相关的test用例控制台的信息以及相关类变量统计计数

    def addSuccess(self, test) -> None:
        """
            pass
        :param test:
        :return:
        """
        logs = []
        output = self. complete_output()
        logs.append(output)
        if self.verbosity > 1:
            sys.stderr.write('ok ')
            sys.stderr.write(str(test))
            sys.stderr.write('\n')
        else:
            sys.stderr.write('.')
        self.success_counter += 1
        self.status = '成功'
        self.case_log = output.split('\n')
        self._mirrorOutput = True

3、当用例为失败用例时,会走addFailure函数,该函数主要是获取相关的test用例控制台的信息和错误信息以及相关类变量统计计数

    def addFailure(self, test, err):
        """
            add Some Failures Result and infos
        :param test:
        :param err:
        :return:
        """
        logs = []
        output = self.complete_output()
        logs.append(output)
        logs.extend(self.error_or_failure_text(err))
        self.failure_count += 1
        self.add_test_type('失败', logs)
        if self.verbosity > 1:
            sys.stderr.write('F  ')
            sys.stderr.write(str(test))
            sys.stderr.write('\n')
        else:
            sys.stderr.write('F')
        
        self._mirrorOutput = True

4、当用例为报错用例时,会走addError函数,该函数主要是获取相关的test用例控制台的信息和错误信息以及相关类变量统计计数

    def addError(self, test, err):
        """
            add Some Error Result and infos
        :param test:
        :param err:
        :return:
        """
        logs = []
        output = self.complete_output()
        logs.append(output)
        logs.extend(self.error_or_failure_text(err))
        self.failure_count += 1
        self.add_test_type('失败', logs)
        if self.verbosity > 1:
            sys.stderr.write('F  ')
            sys.stderr.write(str(test))
            sys.stderr.write('\n')
        else:
            sys.stderr.write('F')
        
        self._mirrorOutput = True

5、通过addSuccess、addFailure、addError函数,会将test用例的控制台信息以及报错信息(addFailure、addError函数)都赋值给类变量self.case_log

    def add_test_type(self, status: str, case_log: list) -> None:
        """
            abs
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值