如何让自动化测试报告内容更丰富<Python>

简述

使用selenium webdriver + Python做自动化测试,执行完成后要生成测试报告,Python我们使用的HTMLtestrunner 进行生成,但是默认提供的生成报告内容,并不能满足我们的需求,怎么才能让测试报告数据更清晰,内容更丰富呢。对于一些人来说,可能已经重写了报告生成方式,放弃使用HTMLtestrunner。但是对于python小白可能还做不到,只能用现有东西进行展示,那么下面简单介绍通过修改HTMLtestrunner去实现想要的内容。

先通过两张图片对比一下我们将要实现的功能:

图表 1

图表 2

如图所示,图表1是原始样式输出,图表2是修改后样式输出。通过对比我们可以看到,图表2比图表1多了首位部的两列。我在第一行加caseid,用来记录用例的编号,最后一列,添加了每一个用例执行过程中关键步骤的截图快照。

这样做的好处:

  1. 有了用例编号我们可以通过用例ID进行对用例的定位,尤其是对失败用例的定位。
  2. 有了用例执行过程中关键位置截图快照,对于失败或者出错异常的用例,在无人值守情况下进行执行用例时,可以进行界面追踪。

实现

下面来介绍怎么实现的,首先先说一下我实现的思路。对于这个我们的测试报告而言,我只想调整一下他的展示样式,丰富两列内容。所以先去想怎么去把他的样式给修改了。然后再往修改后的样式表格里面添加数据。

也就是分两步做:

1改样式

2加数据

改样式

改样式,这里只需要会基础的HTML <table>中行、列标识就可以了。

我们要在界面中加两列,那么很简单,就是加两个<td></td>就可以了。

看源码部分:

从395行左右开始就是存储HTML代码展示的部分,找到table标签和第一行列头展示内容。

脚本片段1:

REPORT_TMPL = “””  ……   “”” 代码段里面包含了<table>的结构内容

如:

<table id=‘result_table‘>

<colgroup>

<col align=‘left‘ />

<col align=‘right‘ />

<col align=‘right‘ />

<col align=‘right‘ />

<col align=‘right‘ />

<col align=‘right‘ />

</colgroup>

<tr id=‘header_row‘>

    <td colspan=‘2‘>Test Group/Test case</td>

    <td>Count</td>

    <td>Pass</td>

    <td>Fail</td>

    <td>Error</td>

<td>View</td>

<td>Screenshot</td>

</tr>

%(test_list)s

<tr id=‘total_row‘>

    <td colspan=‘2‘>Total</td>

    <td>%(count)s</td>

    <td>%(Pass)s</td>

    <td>%(fail)s</td>

    <td>%(error)s</td>

    <td>&nbsp;</td>

    <td>&nbsp;</td>

</tr>

</table>

table标签中的第一个<tr>就是第一行,<tr>中的每一个<td></td>代表一列。标签中间的文本是直接显示在界面的。

<tr id=‘header_row‘>

         <td colspan=‘2‘>Test Group/Test case</td>   //这里添加colspan=‘2‘ 是合并2个列。因为下面的行中的caseid需要占一列,但是标题列头部分显示是一个整体,所以做了合并

         <td>Count</td>

    <td>Pass</td>

    <td>Fail</td>

    <td>Error</td>

<td>View</td>

<td>Screenshot</td>    //图片快照的列头标题

</tr>

脚本片段2:

REPORT_CLASS_TMPL = “”” … “””代码段 是 展示calss的行,可以叫做测试模块的类,它是单独放在一行中的,每个模块一行。因为要跟上面的第一行标题中的列数对应,所以修改如下:

<tr class=‘%(style)s‘>

    <td>case_id</td>    //添加的caseid 的标题,这一行不在主列头,而是放在测试模块用例统计所在的行里面。

    <td>%(desc)s</td>

    <td>%(count)s</td>

    <td>%(Pass)s</td>

    <td>%(fail)s</td>

    <td>%(error)s</td>

    <td><a href="javascript:showClassDetail(‘%(cid)s‘,%(count)s)">Detail</a></td>

    <td>&nbsp;</td>  //保持列数统一,加入空白列

</tr>

脚本片段3:

REPORT_TEST_WITH_OUTPUT_TMPL = “”” … “”” 是测试用例展示部分代码,这段内容是展开测试模块后进行显示的

 REPORT_TEST_WITH_OUTPUT_TMPL = r"""

<tr id=‘%(tid)s‘ class=‘%(Class)s‘>

    <td  align=‘center‘>%(caseid)s</td>    //%(caseid)s 是python转译html代码中变量替换方式。caseid 会在python脚本中定义。

    <td class=‘%(style)s‘><div class=‘testcase‘>%(desc)s</div></td>

    <td colspan=‘5‘ align=‘center‘>

    <!--css div popup start-->

    <a class="popup_link" onfocus=‘this.blur();‘ href="javascript:showTestDetail(‘div_%(tid)s‘)" >

        %(status)s</a>

    <div id=‘div_%(tid)s‘ class="popup_window">

        <div style=‘text-align: right; color:red;cursor:pointer‘>

        <a onfocus=‘this.blur();‘ onclick="document.getElementById(‘div_%(tid)s‘).style.display = ‘none‘ " >

           [x]</a>

        </div>

        <pre>

        %(script)s

        </pre>

    </div>

    <!--css div popup end-->

    </td>

    <td align=‘center‘>

    <a href="%(image)s" title="%(image)s">  //这一列内容加入图片快照的链接访问路径 %(image)s 中替换链接地址

    <img src="..\data\img.png" height=20 width=20 border=0 /></a>  //链接图标

    </td>

</tr>

单从HTML界面样式展示来看,上面所有代码段中修改都是在每个<tr>加入两个<td></td>。

这样我们的样式就改完了。然后开始加入数据。

加数据

先想一下我们要加什么数据.从样式中看我们增加了两个列,那么有两列的数据是需要增加的,具体加什么呢?想一下?我们在改样式的时候加的两个列中使用到了变量,那么变量取值是需要实现的。那么首先定义变量。

定义报告输出两个变量的取值,放在 REPORT_TEST_OUTPUT_TMPL定义的下面:

脚本片段4:

REPORT_TEST_OUTPUT_TMPL = r"""

%(id)s: %(output)s

"""

<!--添加内容-->

    REPORT_TEST_OUTPUT_IMAGE = r"""

%(screenshot)s

"""

    REPORT_TEST_OUTPUT_CASEID = r"""

%(case_id)s

"""

然后找到 _generate_report_test 函数,在这个函数中定义我们要替换html变量,并实现变量的取值。

脚本片段5:

<!—在原有的script下面分别添加caseid和image变量并赋值,此处不用在意为什么怎么实现的,这么用就对了,script内容展示的其实就是我们case执行时 控制台输出的内容 所以如果你想获取自己在case中print出来的数据就这么做-->

script = self.REPORT_TEST_OUTPUT_TMPL % dict(

            id = tid,

            output = saxutils.escape(uo+ue),

        )

        image = self.REPORT_TEST_OUTPUT_IMAGE % dict(

                 screenshot = saxutils.escape(uo+ue)

        )

        caseid = self.REPORT_TEST_OUTPUT_CASEID % dict(

                 case_id = saxutils.escape(uo+ue)

        )

                   <!—html中替换的字符串变量进行详细取值-->

        row = tmpl % dict(

            tid = tid,

            Class = (n == 0 and ‘hiddenRow‘ or ‘none‘),

            style = n == 2 and ‘errorCase‘ or (n == 1 and ‘failCase‘ or ‘none‘),

            desc = desc,

            script = script,

                            <!—因为获取内容都是字符串,所以只需要进行字符串截取就可以了-->

            image = image[image.find("image"):(int(image.find("png"))+3)],

                            caseid = caseid[caseid.find("case"):(int(caseid.find("case"))+9)],

            status = self.STATUS[n],

        )

上面 image 、caseid 字符串截取位置跟我在控制台输出的内容有关系,所以不是通用的,需要自行修改。字符串截取的方式就不讲了,方式很多种找自己合适的熟悉的就行。

至此修改HTMLtestrunner生成报告模板就修改结束,我的这个方式或许不是你想要的,不是你想展示的,希望能在思路上帮你去解决你的问题。

另:有朋友问能不能内容显示成中文的,看明白了上面内容我想中文的显示就不是什么问题了。直接改HTML标签中显示的英文内容翻译为中文就可以了。

时间: 2024-10-07 16:33:58

如何让自动化测试报告内容更丰富<Python>的相关文章

Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告2(使用PyCharm )

1.说明 在我前一篇文件(Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告1(使用IDLE ))中简单的写明了,如何生产测试报告,但是使用IDLE很麻烦,而且在实际的项目中也不方便,所以,查了很多资料来研究如何在PyCharm中生成测试报告,故此记录一下(命名什么的不规范就不要纠结了). 2.步骤 第一步:下载HTMLTestRunner.py 参考:Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告1(使

Python&amp;Selenium&amp;Unittest&amp;BeautifuReport 自动化测试并生成HTML自动化测试报告

一.摘要 本篇博文将介绍如何借助BeautifulReport和HTML模版,生成HTML测试报告的BeautifulReport 源码Clone地址为 https://github.com/TesterlifeRaymond/BeautifulReport,其中 BeautifulReport.py和其template是我们需要的关键. 二.BeautifulReport 如下代码是BeautifulReport.py的源码,其中几个注释的地方需要注意,将其集成进自己的自动化框架时需要做相应的

HTMLTESTRunner自动化测试报告增加截图功能

我们都知道HTMLTESTRunner自动化测试报告,是Unittest单元测试框架报告,那么在做ui测试的时候就有点不适用了. 我们需要出错截图功能. 以下是我改的,增加了截图功能,先展示界面,再展示代码. 概要界面: 展开界面: 代码展示: 以下代码,只支持python2.7;至于python3的话,可以自己改一下. 截图方式:print 'screenshot:', timestrmap, '.png'    在要截图的位置print就可以了. 原理:展示时通过捕获unittest  pr

自动化瓦力多渠道打包python脚本

自动化瓦力多渠道打包python脚本 目录介绍 1.本库优势亮点 2.使用介绍 3.注意要点 4.效果展示 5.其他介绍 0.首先看看我录制的案例演示 如下所示,这段python代码很简单,工具十分强大,一键多渠道打包工具. 项目的开源地址:https://github.com/yangchong211/YCWalleHelper 1.本库优势亮点 通过该自动化脚本,自需要run一下或者命令行运行脚本即可实现美团瓦力多渠道打包,打包速度很快 配置信息十分简单,代码中已经注释十分详细.Keysto

Allure自动化测试报告我是这样用的

关于自动化测试报告: 之前用过testNG自带的测试报告.优化过reportNG的测试报告.extentreport.Zreport(大飞总原创),这些是我之前都用过的,也是在去年雯姐和我说过Allure2这个报告不错,一直没时间,正巧最近有用到,接触下发现确实是个神器. Allure(已经有allure2了,小编用的就是allure2),生成的测试报告与上述对比,简直堪称完美!先上个测试报告的图表,给大家直观感受下: 下面让我们一起走进Allure的世界,跟上步伐,相信我这一切并不难 一.po

【python+selenium自动化】使用pytest+allure2完成自动化测试报告的输出

pytest的pytest-html插件是一个很方便的测试报告,运行自动化测试用例时,pytest后加上参数即可 allure是一个测试报告的框架,相比pytest-html的优势就是“逼格” 他的优点除了好看,还有几点: 1.可以把测试的步骤都加到报告中 2.可以加入自定义的截图或错误截图 3.使用jenkins持续集成,会有一个趋势图,可以展示过往测试用例的趋势 4.可以直接转换成中文 5.有多种装饰器可供选择 安装: 1.java环境,1.8以上 2.在安装的时候遇到好多坑,主要就是版本问

python自动化测试报告(excel篇)

转:https://www.jianshu.com/p/6c5d328bf390 # -*- coding: utf-8 -*- import xlsxwriter def get_format(wd, option={}): return wd.add_format(option) # 设置居中 def get_format_center(wd,num=1): return wd.add_format({'align': 'center','valign': 'vcenter','border

Python自动化开发,Day1 - Python基础1

本章内容 Python是什么? Python的发展史 Python2与3的区别 Python的语言类型 Python的优缺点 一.Python是什么? Python的创始人是吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.之所以选中Python作为该编程语言的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者. 最新的TIOBE排行榜中,Python赶超

python3-如何正常使用HTMLTestRunner.py,生成自动化测试报告

其实HTMLTestRunner.py是基于python2开发的,为了使其支持python3环境,需要对其的部分内容进行修改.下面我们通过编辑器打开HTMLTestRunner.py文件(编辑器可以选择python IDE 或者pycharm.sublime,个人觉得最好选择后两种之一,这样让你更好的定位到修改的内容) #第94行 import StringIO 修改为: import io #第539行 self.outputBuffer = StringIO.StringIO() 修改为: