一、前期准备:
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> </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)