美文网首页
HTMLTestRunner使用详解+饼图美化

HTMLTestRunner使用详解+饼图美化

作者: 小迷糊仙 | 来源:发表于2020-08-04 16:37 被阅读0次

    一、前期准备:
    1、安装HTMLTestRunner
    下载路径:
    http://tungwaiyip.info/software/HTMLTestRunner.html

    2、导包
    import HTMLTestRunner
    二、加载测试类
    1、第一种方法:
    使用discover()加载测试用例

    def run_suite(self):
        report_path = r'C:\Users\admin\PycharmProjects\登陆接口自动化\report'
        timer = time.strftime("%Y-%m-%d_%H_%M-%S")
        report_file = report_path + "\\" + timer + ".html"
        #方法一:使用unittest.defaultTestLoader.discover()方法加载测试类
        discover = unittest.defaultTestLoader.discover(test_case_dir,pattern='test_login*.py')
    
        #执行用例
        with open(report_file,'wb') as f:
             runner = HTMLTestRunner(stream=f,title="登陆接口自动化报告",description="登陆用例")
             #方法一:
             runner.run(discover)
    

    2、第二种方法:
    使用suite.addTests(unittest.TestLoader().loadTestsFromTestCase())加载测试用例

    def run_suite(self):
        report_path = r'C:\Users\admin\PycharmProjects\登陆接口自动化\report'
        timer = time.strftime("%Y-%m-%d_%H_%M-%S")
        report_file = report_path + "\\" + timer + ".html"
        #方法二:使用suite.addTests()方法加载测试类
        suite = unittest.TestSuite()
        suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestLogin))
        #执行用例
        with open(report_file,'wb') as f:
             runner = HTMLTestRunner(stream=f,title="登陆接口自动化报告",description="登陆用例")
             #方法二:
             runner.run(suite)
    

    三、生成测试报告
    生成报告如下:

    四、添加饼图美化
    由于HTMLTestRunner是html文件,想要添加饼图或者柱状图,需要了解些html的基础知识,以下是我结合网上资料学习后修改好的HTMLTestRunner.py文件,执行效果如下:

    详细修改步骤如下:

    • 1、搜索饼图html代码
    • 2、修改HTMLTestRunner源码
      找到如下位置,新增div内容:

    <div id='container_tu' style="height: 215px;width: 68%%;float: left;"></div>

    • 3、找到heading样式,新增内容如下:

    • 4、增加饼图样式,内容如下:

    • 5、把第1步搜索的饼图代码放到REPORT_TMPL的最后面如下:

        REPORT_TMPL = """
    <p id='show_detail_line'>Show
    <a href='javascript:showCase(0)'>Summary</a>
    <a href='javascript:showCase(1)'>Failed</a>
    <a href='javascript:showCase(2)'>All</a>
    </p>
    <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>Test Group/Test case</td>
        <td>Count</td>
        <td>Pass</td>
        <td>Fail</td>
        <td>Error</td>
        <td>View</td>
    </tr>
    %(test_list)s
    <tr id='total_row'>
        <td>Total</td>
        <td>%(count)s</td>
        <td>%(Pass)s</td>
        <td>%(fail)s</td>
        <td>%(error)s</td>
        <td>&nbsp;</td>
    </tr>
    </table>
    
    <!-- /*自己新增部分Start*/ -->
    <script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/echarts.min.js"></script>
    <script type="text/javascript">
            var dom = document.getElementById("container_tu");
            var myChart = echarts.init(dom);
            var app = {};
    
            app.title = '环形图';
    
            var option = {
                tooltip: {
                        trigger: 'item',
                        formatter: "{a} <br/>{b}: {c} ({d}%%)"
                    },
                color:['red','#c60','#6c6','#bbe2e8'],
                legend: {
                    orient: 'horizontal',
                    x: 'left',
                    data: ['失败', '未通过', '通过', '总用例']
                },
                series: [{
                    name: '访问来源',
                    type: 'pie',
                    radius: ['30%%', '70%%'],
                    avoidLabelOverlap: false,
                    label: {
                        normal: {
                            show: false,
                            position: 'center'
                        },
                        emphasis: {
                            show: true,
                            textStyle: {
                                fontSize: '30',
                                fontWeight: 'bold'
                            }
                        }
                    },
                    labelLine: {
                        normal: {
                            show: false
                        }
                    },
                    data: [
    
                        {
                            value: %(error)s,
                            name: '失败'
                        },
                        {
                            value: %(fail)s,
                            name: '未通过'
                        },
                        {
                            value: %(Pass)s,
                            name: '通过'
                        },
                        {
                            value: %(count)s,
                            name: '总用例'
                        }
                    ]
                }]
            };
            if(option && typeof option === "object") {
                myChart.setOption(option, true);
            }
    </script>
    <!-- #/*自己新增部分End*/ -->
    
    """ # variables: (test_list, count, Pass, fail, error)
    

    相关文章

      网友评论

          本文标题:HTMLTestRunner使用详解+饼图美化

          本文链接:https://www.haomeiwen.com/subject/nnnprktx.html