HTMLTestRunner使用详解+饼图美化

2020-08-04  本文已影响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文件,执行效果如下:

详细修改步骤如下:

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

    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)
上一篇下一篇

猜你喜欢

热点阅读