Python 从无到有搭建WebUI自动化测试框架之测试报告优化

前言

本文是HTMLTestRunner优化自动化测试报告内容的一个案例
基于一个Python编写的成熟的web自动化测试框架,框架教程可见:
https://blog.csdn.net/weixin_40331132/article/details/106482043?utm_source%20=%20uc_fansmsg

框架源代码下载:
https://download.csdn.net/download/weixin_40331132/85580645

框架测试报告展示(修改后的样式)
在这里插入图片描述

 
 

一、HTMLTestRunner简介

这一节与本文主题内容无关,主要是简单介绍一下HTMLTestRunner;想看主题内容请看第二节。

1.1、简介

   HTMLTestRunner 是一个 Python 单元测试框架的扩展,它能够以 HTML 格式生成测试报告,使得测试结果更加直观和易读。它基于 unittest 框架,并且可以在 Python 2.x 和 Python 3.x 版本中使用。

   使用 HTMLTestRunner,可以轻松地生成测试报告,并将其展示在网页上。测试报告包括测试用例的执行结果、测试用例的运行时间、测试用例的名称和描述等。此外,HTMLTestRunner 还支持将测试报告中的测试用例按照模块或者类别进行分组,以便更好地查看测试结果。

   HTMLTestRunner 的使用非常简单,只需要按照以下步骤即可:
 
 

1.2、安装

安装方法有两种
1、使用命令下载

pip install HTMLTestRunner

2、网站下载
http://tungwaiyip.info/software/HTMLTestRunner.html
在这里插入图片描述
 

点击上图网站框起的链接,进入页面,
在这里插入图片描述

 
将里面的内容全部复制到一个py文件里面,这个文件取名叫做HTMLTestRunner.py
在这里插入图片描述

 
然后在文件里修改相关内容(因为它是Python2时代产物,Python3要调整下兼容):

# 94行,import StringI0  改为 import io
# 118行,self.fp.write(s)  改为   self.fp.write(bytes(s,'UTF-8'))
# 539行,self.outputBuffer = StringI0.StringIO()   改为  self.outputBuffer = io.BytesIO()
# 631行,print >>sys .stderr, '\nTime ELapsed: %s' % (self.stopTime-seLf.startTime)   改为 print('\nTime Elapsed: %s' % (self.stopTime-self.startTime))
# 642行,if not rmap.has_key(cls):  改为 if not cls in rmap:
# 766行,uo = o.decode('latin-1')  改为 uo = o
# 768行,uo = o   改为 uo = o.decode('utf-8')
# 772行,ue = e.decode('latin-1')  改为 ue = e
# 774行,ue = e  改为 ue = e.decode('utf-8')

 
 

1.3、使用

在HTMLTestRunner.py所在目录下新增一个demo.py文件。编写如下代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2023/3/25 22:48
# @Author  : 魂尾
# @File    : demo.py
# @Description : 这个函数是用来balabalabala自己写
import unittest
import HTMLTestRunner

class Test(unittest.TestCase):

    def test_add(self):
        self.assertEqual(1 + 1, 2)

    def test_subtract(self):
        self.assertEqual(3 - 1, 2)

if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(Test('test_add'))
    suite.addTest(Test('test_subtract'))

    with open('test_report.html', 'wb') as f:
        runner = HTMLTestRunner.HTMLTestRunner(
            stream=f,
            title='Test Report',
            description='This is a test report'
        )
        runner.run(suite)

 
运行上述代码,将会在当前目录下生成一个名为 test_report.html 的文件,其中包含测试结果的详细信息。
在这里插入图片描述

 
浏览器打开为:
在这里插入图片描述

这是HTMLTestRunner最初始的样式,可以根据不同架构要求,改变HTMLTestRunner中的html模板和生成报告函数,展示成自己需要的内容,如前言中的报告样式。

 
 

二、自动化框架中的用例名称展示

声明:非前言中的自动化框架,下面修改就仅供参考了。

 

2.1、报告修改需求

自动化框架中的测试报告样式如下:
在这里插入图片描述

自动化框架中用例

在这里插入图片描述

如上两图中,需要将用例中的sheet页签名称(用例名)在报告中对应位置展示出来
 
 

2.2、修改

2.2.1、需要修改的内容

HTMLTestRunner.py里要生成展示用例名称的测试报告,需要修改四个区域

1 、_generate_report_test :生成报告详情函数

2 、REPORT_TEST_OUTPUT_TMPL :用例执行日志模板

模板生成报告的区域展示如下(红框标出):
在这里插入图片描述

3 、REPORT_TEST_WITH_OUTPUT_TMPL :未通过用例详情模板
4、 REPORT_TEST_NO_OUTPUT_TMPL :通过用例详情模板

模板生成报告的区域展示如下(红框标出):

在这里插入图片描述

 
 

2.2.2、开始修改

 
1、修改REPORT_TEST_OUTPUT_TMPL模板中的 id 改成case_name

第408行 %(id)s: %(output)s 改为 %(case_name)s: %(output)s

在这里插入图片描述

 
2、修改REPORT_TEST_WITH_OUTPUT_TMPL模板中的desc改成case_name

第383行 %(desc)s 改为 %(case_name)s

在这里插入图片描述

 
3、修改REPORT_TEST_NO_OUTPUT_TMPL模板中的desc改成case_name

第402行 %(desc)s 改为 %(case_name)s

在这里插入图片描述

 
4、修改_generate_report_test函数中代码

注释掉 685行、686行,desc不用了
在这两行后面添加一行代码,来获取报告中的用例名称

case_name = list(t.excu_cases[index].keys())[0]

在这里插入图片描述

第709行、717行 desc = desc 改为 case_name = case_name

在这里插入图片描述

 
 

2.2.3、结果查看

修改后,执行自动化测试产生的报告如下:
在这里插入图片描述

报告中已经展示了用例名称了,表示我们修改成功。

再一次声明:本文仅以下自动化框架修败,其它自动化框架仅供参考

框架实现教程可见:
https://blog.csdn.net/weixin_40331132/article/details/106482043?utm_source%20=%20uc_fansmsg

框架源代码下载:
https://download.csdn.net/download/weixin_40331132/85580645

好了,本文到此结束,针对框架有什么难实现的问题,可以留言,俺抽空出新文章写实现教程

希望你来一个订阅,点赞,收藏

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魂尾ac

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值