zoukankan      html  css  js  c++  java
  • unittest框架下的HTMLTestRunner报告通过与失败样式优化

      引言

      在很早之前,我写过一篇文章关于HTMLTestRunner报告优化的处理:https://www.cnblogs.com/liudinglong/p/12346824.html,后面群友在群里问了一个问题,是关于通过和失败的用例,图标样式和单击响应的问题。虽然很早之前已经帮群友解决了,由于之前工作繁忙,然而一直没有写下来,现在写下来,以便帮助更多的小伙伴们少走弯路。

      问题

      下面就是群友的问题:

      群友说我的博客没有关于这个问题的处理方法,好吧,先来看看是什么问题:

    针对群友的截图,发现两个问题:

    问题一:饼图位置不太友好

    问题二:单击通过没有反应,或单击通过后,也没有显示日志。

      解决方案

      首先进入报告模板源码中,找到报告_generate_report_test,具体如下:

     def _generate_report_test(self, rows, cid, tid, n, t, o, e):
            # e.g. 'pt1.1', 'ft1.1', etc
            has_output = bool(o or e)
            # ID修改点为下划线,支持Bootstrap折叠展开特效 - Findyou
            tid = (n == 0 and 'p' or 'f') + 't%s_%s' % (cid+1,tid+1)
            name = t.id().split('.')[-1]
            if self.verbosity > 1:
                doc = t.shortDescription() or ""
            else:
                doc = ""
    
            desc = doc and ('%s: %s' % (name, doc)) or name
            if not PY3K:
                if isinstance(desc, str):
                    desc = desc.decode("utf-8")
            # tmpl = has_output and self.REPORT_TEST_WITH_OUTPUT_TMPL or self.REPORT_TEST_NO_OUTPUT_TMPL
            tmpl = has_output and (n==0 and self.REPORT_TEST_NO_OUTPUT_TMPL or self.REPORT_TEST_WITH_OUTPUT_TMPL) or self.REPORT_TEST_NO_OUTPUT_TMPL
    
            # utf-8 支持中文 - Findyou
            # o and e should be byte string because they are collected from stdout and stderr?
            if isinstance(o, str):
                # uo = unicode(o.encode('string_escape'))
                if PY3K:
                    uo = o
                else:
                    uo = o.decode('utf-8', 'ignore')
            else:
                uo = o
            if isinstance(e, str):
                # ue = unicode(e.encode('string_escape'))
                if PY3K:
                    ue = e
                elif e.find("Error") != -1 or e.find("Exception") != -1:
                    es = e.decode('utf-8', 'ignore').split('
    ')
                    es[-2] = es[-2].decode('unicode_escape')
                    ue = u"
    ".join(es)
                else:
                    ue = e.decode('utf-8', 'ignore')
            else:
                ue = e
    
            script = self.REPORT_TEST_OUTPUT_TMPL % dict(
                id=tid,
                output=saxutils.escape(uo + ue),
            )
            if getattr(t, 'imgs', []):
                # 判断截图列表,如果有则追加
                tmp = u""
                for i, img in enumerate(t.imgs):
                    if i == 0:
                        tmp += """ <img src="data:image/jpg;base64,%s" style="display: block;" class="img"/>
    """ % img
                    else:
                        tmp += """ <img src="data:image/jpg;base64,%s" style="display: none;" class="img"/>
    """ % img
                imgs = self.IMG_TMPL % dict(imgs=tmp)
            else:
                imgs = u"""无截图"""
    
            row = tmpl % dict(
                tid=tid,
                Class=(n == 0 and 'hiddenRow' or 'none'),
                style=n == 2 and 'errorCase' or (n == 1 and 'failCase' or 'passCase'),
                desc=desc,
                script=script,
                status=self.STATUS[n],
                img=imgs,
            )
            rows.append(row)
            if not has_output:
                return
    
        def _generate_ending(self):
            return self.ENDING_TMPL
    

      

    这个函数主要处理测试结果如果展示在报告上的,整个看不懂没关系,只需要加个代码:

    n == 2是通过的用例,就输出REPORT_TEST_WITH_OUTPUT_TMPL,否则输出REPORT_TEST_NO_OUTPUT_TMPL,

    然后将REPORT_TEST_NO_OUTPUT_TMPL的内容改成与REPORT_TEST_WITH_OUTPUT_TMPL一直,再将button渲染成:btn-success。

    接下来就是饼图了,修改位置:

      优化后的报告

      优化后,我们再运行一下脚本,查看报告:

    效果图:

    回复群友的截图:

      

      自此,HTML报告优化到此结束。另外,需要报告文件的或喜欢自动化,测试开发的小伙伴可以加入我们学习交流QQ群:696400122。

  • 相关阅读:
    bootstrap 弹出框(Popover)插件 修改title等属性选项值
    dedecms 搬家流程
    jQuery ui 百叶窗blind方向设置
    css 优先级
    dedecms 标签
    dedecms 建站相关问题
    css 透明度使用
    css 边框使用
    css 阴影使用
    js 常用判断
  • 原文地址:https://www.cnblogs.com/liudinglong/p/12652471.html
Copyright © 2011-2022 走看看