22083102
This commit is contained in:
parent
1959dc267b
commit
224cb999ef
|
@ -1,4 +1,5 @@
|
|||
*.pyc
|
||||
*.pyo
|
||||
~$*.*
|
||||
venv
|
||||
__pycache__
|
||||
|
|
|
@ -992,6 +992,7 @@ class HTMLTestRunner(Template_mixin):
|
|||
self.passrate = None
|
||||
self.errormsg = None
|
||||
self.logspath = log and os.path.abspath(log)
|
||||
self.logspath and open(self.logspath, 'wb').close()
|
||||
self.logo = logo
|
||||
self.sign = sign
|
||||
self.stream = stream or (report and open(os.path.abspath(report), 'wb'))
|
||||
|
|
|
@ -1,689 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html lang="zh-CN" xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>测试报告</title>
|
||||
<meta name="generator" content="HTMLTestRunner"/>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0"/>
|
||||
<link rel="stylesheet" href="https://www.fanscloud.net/res/bootstrap/3.0.3/css/bootstrap.min.css">
|
||||
<script src="https://www.fanscloud.net/res/jquery/2.0.0/jquery.min.js"></script>
|
||||
<script src="https://www.fanscloud.net/res/bootstrap/3.0.3/js/bootstrap.min.js"></script>
|
||||
<script src="https://img.hcharts.cn/highcharts/highcharts.js"></script>
|
||||
<script src="https://img.hcharts.cn/highcharts/modules/exporting.js"></script>
|
||||
|
||||
<style type="text/css" media="screen">
|
||||
body { font-family: Microsoft YaHei;padding: 20px; font-size: 100%; }
|
||||
table { font-size: 100%; }
|
||||
.table tbody tr td{
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* -- header ---------------------------------------------------------------------- */
|
||||
.header .description, .attribute {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
/* --- 失败和错误合集样式 -- Gelomen --- */
|
||||
.failCollection, .errorCollection {
|
||||
width: auto;
|
||||
float: left;
|
||||
}
|
||||
#failedCaseOl li {
|
||||
color: red
|
||||
}
|
||||
#errorsCaseOl li {
|
||||
color: orange
|
||||
}
|
||||
|
||||
/* --- 打开截图特效样式 -- Gelomen --- */
|
||||
.data-img{
|
||||
cursor:pointer
|
||||
}
|
||||
|
||||
.pic_looper{
|
||||
width:100%;
|
||||
height:100%;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top:0;
|
||||
opacity: 0.6;
|
||||
background: #000;
|
||||
display: none;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.pic_show{
|
||||
width:100%;
|
||||
position:fixed;
|
||||
left:0;
|
||||
top:0;
|
||||
right:0;
|
||||
bottom:0;
|
||||
margin:auto;
|
||||
text-align: center;
|
||||
display: none;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.pic_box{
|
||||
padding:10px;
|
||||
width:90%;
|
||||
height:90%;
|
||||
margin:40px auto;
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pic_box img{
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
width: auto;
|
||||
height: auto;
|
||||
-moz-box-shadow: 0px 0px 20px 0px #000;
|
||||
-webkit-box-shadow: 0px 0px 20px 0px #000;
|
||||
box-shadow: 0px 0px 20px 0px #000;
|
||||
}
|
||||
|
||||
/* --- 饼状图样式 */
|
||||
#container {
|
||||
max-width: 100%;
|
||||
width: 450px;
|
||||
height: 350px;
|
||||
float: left;
|
||||
}
|
||||
#container_extend {
|
||||
max-width: 100%;
|
||||
width: 550px;
|
||||
height: 400px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
||||
/* -- report ------------------------------------------------------------------------ */
|
||||
#total_row { font-weight: bold; }
|
||||
.passedCase { color: #3FB83F; font-family: Menlo,Monaco,Consolas,"Courier New",monospace; font-size: 14px; font-weight: bold; }
|
||||
.failedCase { color: #D9433F; font-family: Menlo,Monaco,Consolas,"Courier New",monospace; font-size: 14px; font-weight: bold; }
|
||||
.errorsCase { color: #F0A02F; font-family: Menlo,Monaco,Consolas,"Courier New",monospace; font-size: 14px; font-weight: bold; }
|
||||
.hiddenRow { display: none; }
|
||||
.testcase { margin-left: 1em; word-break: break-all; white-space: pre-wrap; }
|
||||
.screenshot:link { text-decoration: none;color: deeppink; }
|
||||
.screenshot:visited { text-decoration: none;color: deeppink; }
|
||||
.screenshot:hover { text-decoration: none;color: darkcyan; }
|
||||
.screenshot:active { text-decoration: none;color: deeppink; }
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body >
|
||||
<script language="javascript" type="text/javascript">
|
||||
|
||||
$(function(){
|
||||
// 修改 失败 和 错误 用例里对应按钮的颜色ClassName为动态加载 -- Gelomen
|
||||
$("button").each(function () {
|
||||
var text = $(this).text();
|
||||
if(text == "失败"){
|
||||
$(this).addClass("btn-danger")
|
||||
}else if(text == "错误") {
|
||||
$(this).addClass("btn-warning")
|
||||
}else if(text == "通过") {
|
||||
$(this).addClass("btn-success")
|
||||
}
|
||||
});
|
||||
|
||||
// 给失败和错误合集加样式 -- Gelomen
|
||||
var p_attribute = $("p.attribute");
|
||||
p_attribute.eq(4).addClass("failCollection");
|
||||
p_attribute.eq(5).addClass("errorCollection");
|
||||
|
||||
// 打开截图,放大,点击任何位置可以关闭图片
|
||||
$(".screenshot").click(function(){
|
||||
var img = $(this).attr("img");
|
||||
$('.pic_show img').attr('src', img);
|
||||
$('.pic_looper').fadeIn(200);
|
||||
$('.pic_show').fadeIn(200);
|
||||
|
||||
var browserHeight = $(window).height();
|
||||
var pic_boxHeight = $(".pic_box").height();
|
||||
var top = (browserHeight - pic_boxHeight)/2;
|
||||
$('.pic_box').css("margin-top", top + "px")
|
||||
|
||||
});
|
||||
$('.pic_looper, .pic_show').click(function(){
|
||||
$('.pic_looper').fadeOut(200);
|
||||
$('.pic_show').fadeOut(200)
|
||||
});
|
||||
|
||||
var resize_action = function(){
|
||||
// 改变窗口大小时,自动改变图表边距
|
||||
var browserWidth = $(window).width();
|
||||
var margin_left = browserWidth - 360 - 450 - 550 - 40;
|
||||
if(margin_left <= 0){
|
||||
$("#container").css("width", "100%");
|
||||
$("#container_extend").css("width", "100%");
|
||||
$("#testinfo").css("width", "100%");
|
||||
$("#container").css("margin-left", "0px");
|
||||
}else {
|
||||
$("#container").css("width", "450px");
|
||||
$("#container_extend").css("width", "550px");
|
||||
$("#testinfo").css("width", "25%");
|
||||
$("#container").css("margin-left", (margin_left - 1 - 16) + "px");
|
||||
}
|
||||
}
|
||||
resize_action();
|
||||
|
||||
$(window).resize(function(){
|
||||
// 改变窗口大小时,自动改变图片与顶部的距离
|
||||
var browserHeight = $(window).height();
|
||||
var pic_boxHeight = $(".pic_box").height();
|
||||
var top = (browserHeight - pic_boxHeight)/2;
|
||||
$('.pic_box').css("margin-top", top + "px");
|
||||
resize_action();
|
||||
});
|
||||
// 超过浏览器高度时,回到顶部按钮出现
|
||||
$(window).scroll(function(){
|
||||
var browserHeight = $(window).height();
|
||||
var top = $(window).scrollTop();
|
||||
if(top >= browserHeight){
|
||||
$("#toTop").css("display", "block")
|
||||
}else {
|
||||
$("#toTop").css("display", "none")
|
||||
}
|
||||
})
|
||||
// 增加回到顶部过程动画
|
||||
$("#toTop").click(function() {
|
||||
$("html,body").animate({"scrollTop":0}, 500)
|
||||
})
|
||||
// 增加条形图
|
||||
$('#container_extend').highcharts({
|
||||
chart: {
|
||||
type: 'bar'
|
||||
},
|
||||
credits: {
|
||||
enabled: false
|
||||
},
|
||||
navigation: {
|
||||
buttonOptions: {
|
||||
enabled: false
|
||||
}
|
||||
},
|
||||
title: {
|
||||
text: '用例集合情况'
|
||||
},
|
||||
xAxis: {
|
||||
categories: ["测试用例"]
|
||||
},
|
||||
yAxis: {
|
||||
min: 0,
|
||||
title: {
|
||||
text: '用例数量'
|
||||
},
|
||||
reversedStacks: false
|
||||
},
|
||||
legend: {
|
||||
reversed: false
|
||||
},
|
||||
plotOptions: {
|
||||
series: {
|
||||
stacking: 'normal'
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
name: '通过',
|
||||
color: '#64bb64',
|
||||
data: [4]
|
||||
}, {
|
||||
name: '失败',
|
||||
color: '#f16d7e',
|
||||
data: [0]
|
||||
}, {
|
||||
name: '错误',
|
||||
color: '#fdc68c',
|
||||
data: [0]
|
||||
}]
|
||||
})
|
||||
// 增加饼状图
|
||||
$('#container').highcharts({
|
||||
chart: {
|
||||
plotBackgroundColor: null,
|
||||
plotBorderWidth: null,
|
||||
plotShadow: false,
|
||||
spacing : [0, 0, 0, 0]
|
||||
},
|
||||
credits: {
|
||||
enabled: false
|
||||
},
|
||||
navigation: {
|
||||
buttonOptions: {
|
||||
enabled: false
|
||||
}
|
||||
},
|
||||
title: {
|
||||
floating: true,
|
||||
text: '测试结果占比'
|
||||
},
|
||||
tooltip: {
|
||||
pointFormat: '<text style="font-size:10px">{series.name}: {point.percentage:.1f}%</text>'
|
||||
},
|
||||
plotOptions: {
|
||||
pie: {
|
||||
allowPointSelect: true,
|
||||
cursor: 'pointer',
|
||||
colors: ['#64bb64', '#f16d7e', '#fdc68c'],
|
||||
dataLabels: {
|
||||
enabled: true,
|
||||
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
|
||||
style: {
|
||||
color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
|
||||
}
|
||||
},
|
||||
point: {
|
||||
events: {
|
||||
mouseOver: function(e) { // 鼠标滑过时动态更新标题
|
||||
chart.setTitle({
|
||||
text: e.target.name+ '\t'+ e.target.y + ' 个'
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
type: 'pie',
|
||||
innerSize: '80%',
|
||||
name: '比例',
|
||||
data: [
|
||||
['通过', 4], ['失败', 0], ['错误', 0]
|
||||
]
|
||||
}]
|
||||
}, function(c) {
|
||||
// 环形圆心
|
||||
var centerY = c.series[0].center[1],
|
||||
titleHeight = parseInt(c.title.styles.fontSize);
|
||||
c.setTitle({
|
||||
x:0,
|
||||
y:centerY + titleHeight/2
|
||||
});
|
||||
chart = c;
|
||||
});
|
||||
|
||||
// 查看 失败 和 错误 合集链接文字切换 -- Gelomen
|
||||
$(".showDetail").click(function () {
|
||||
if($(this).html() == "点击查看"){
|
||||
$(this).html("点击收起")
|
||||
}else {
|
||||
$(this).html("点击查看")
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
output_list = Array();
|
||||
|
||||
/*level 调整增加只显示通过用例的分类 --Findyou / 修复筛选显示bug --Gelomen
|
||||
0:Summary //all hiddenRow
|
||||
1:Failed //pt&et hiddenRow, ft none
|
||||
2:Passed //pt none, ft&et hiddenRow
|
||||
3:Errors //pt&ft hiddenRow, et none
|
||||
4:All //all none
|
||||
*/
|
||||
function showCase(level) {
|
||||
trs = document.getElementsByTagName("tr");
|
||||
for (var i = 0; i < trs.length; i++) {
|
||||
tr = trs[i];
|
||||
id = tr.id;
|
||||
if (id.substr(0,2) == 'ft') {
|
||||
if (level == 2 || level == 0 || level == 3) {
|
||||
tr.className = 'hiddenRow';
|
||||
}
|
||||
else {
|
||||
tr.className = '';
|
||||
// 切换筛选时只显示预览 -- Gelomen
|
||||
// 失败
|
||||
$("div[id^='div_ft']").attr("class", "collapse");
|
||||
$("div[id^='div_et']").attr("class", "collapse");
|
||||
$("div[id^='div_pt']").attr("class", "collapse");
|
||||
}
|
||||
}
|
||||
if (id.substr(0,2) == 'pt') {
|
||||
if (level == 1 || level == 0 || level == 3) {
|
||||
tr.className = 'hiddenRow';
|
||||
}
|
||||
else {
|
||||
tr.className = '';
|
||||
// 切换筛选时只显示预览 -- Gelomen
|
||||
// 通过
|
||||
$("div[id^='div_ft']").attr("class", "collapse");
|
||||
$("div[id^='div_et']").attr("class", "collapse");
|
||||
$("div[id^='div_pt']").attr("class", "collapse");
|
||||
}
|
||||
}
|
||||
if (id.substr(0,2) == 'et') {
|
||||
if (level == 1 || level == 0 || level == 2) {
|
||||
tr.className = 'hiddenRow';
|
||||
}
|
||||
else {
|
||||
tr.className = '';
|
||||
// 切换筛选时只显示预览 -- Gelomen
|
||||
// 错误
|
||||
$("div[id^='div_ft']").attr("class", "collapse");
|
||||
$("div[id^='div_et']").attr("class", "collapse");
|
||||
$("div[id^='div_pt']").attr("class", "collapse");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//加入详细切换文字变化
|
||||
detail_class=document.getElementsByClassName('detail');
|
||||
if (level == 4) {
|
||||
for (var i = 0; i < detail_class.length; i++){
|
||||
detail_class[i].innerHTML="收起"
|
||||
}
|
||||
}
|
||||
else{
|
||||
for (var i = 0; i < detail_class.length; i++){
|
||||
detail_class[i].innerHTML="详细"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function showClassDetail(cid, count) {
|
||||
var id_list = Array(count);
|
||||
var toHide = 1;
|
||||
for (var i = 0; i < count; i++) {
|
||||
//ID修改.为_
|
||||
tid0 = 't' + cid.substr(1) + '_' + (i+1);
|
||||
tid = 'f' + tid0;
|
||||
tr = document.getElementById(tid);
|
||||
if (!tr) {
|
||||
tid = 'p' + tid0;
|
||||
tr = document.getElementById(tid);
|
||||
if (!tr) {
|
||||
tid = 'e' + tid0;
|
||||
tr = document.getElementById(tid);
|
||||
}
|
||||
}
|
||||
id_list[i] = tid;
|
||||
if (tr.className) {
|
||||
toHide = 0;
|
||||
}
|
||||
}
|
||||
for (var i = 0; i < count; i++) {
|
||||
tid = id_list[i];
|
||||
//修改点击无法收起的BUG,加入【详细】切换文字变化 --Findyou
|
||||
if (toHide) {
|
||||
document.getElementById(tid).className = 'hiddenRow';
|
||||
document.getElementById(cid).innerText = "详细"
|
||||
}
|
||||
else {
|
||||
document.getElementById(tid).className = '';
|
||||
document.getElementById(cid).innerText = "收起"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function html_escape(s) {
|
||||
s = s.replace(/&/g,'&');
|
||||
s = s.replace(/</g,'<');
|
||||
s = s.replace(/>/g,'>');
|
||||
return s;
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class='pic_looper'></div>
|
||||
<div class='pic_show'>
|
||||
<div class='pic_box'>
|
||||
<img src=''/>
|
||||
</div>
|
||||
</div>
|
||||
<div class='header'>
|
||||
<div id="testinfo" style="max-width: 360px; width: auto; float: left;">
|
||||
<h1 style="margin: 5px 0px 10px 0px; font-family: Microsoft YaHei;">测试报告</h1>
|
||||
|
||||
<p class='attribute'><strong>开始时间 : </strong> 2022-08-21 02:45:51</p>
|
||||
|
||||
<p class='attribute'><strong>合计耗时 : </strong> 00:00:03</p>
|
||||
|
||||
<p class='attribute'><strong>测试结果 : </strong> 总共 4,通过 4,失败 0,错误 0,通过率 100.00%</p>
|
||||
|
||||
<p class='attribute'><strong>失败用例 : </strong> 无</p>
|
||||
|
||||
<p class='attribute'><strong>错误用例 : </strong> 无</p>
|
||||
|
||||
<p class='description'></p>
|
||||
</div>
|
||||
<div id="container"></div>
|
||||
<div id="container_extend"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div style="width: auto; clear: both;">
|
||||
<p id='show_detail_line'>
|
||||
<a class="btn btn-primary" href='javascript:showCase(0)'>概要 100.00%</a>
|
||||
<a class="btn btn-success" href='javascript:showCase(2)'>通过 4</a>
|
||||
<a class="btn btn-danger" href='javascript:showCase(1)'>失败 0</a>
|
||||
<a class="btn btn-warning" href='javascript:showCase(3)'>错误 0</a>
|
||||
<a class="btn btn-info" href='javascript:showCase(4)'>全部 4</a>
|
||||
</p>
|
||||
</div>
|
||||
<table id='result_table' class="table table-condensed table-bordered table-hover">
|
||||
<colgroup>
|
||||
<col align='left' style="width: 300px;"/>
|
||||
<col align='right' style="width: 285px;"/>
|
||||
<col align='right' />
|
||||
<col align='right' />
|
||||
<col align='right' />
|
||||
<col align='right' />
|
||||
<col align='right' />
|
||||
<col align='right' style="width: 120px;"/>
|
||||
</colgroup>
|
||||
<tr id='header_row' class="text-center success" style="font-weight: bold;font-size: 14px;">
|
||||
<td>测试用例</td>
|
||||
<td>说明</td>
|
||||
<td>总计</td>
|
||||
<td>通过</td>
|
||||
<td>失败</td>
|
||||
<td>错误</td>
|
||||
<td>耗时</td>
|
||||
<td>详细</td>
|
||||
</tr>
|
||||
|
||||
<tr class='passClass warning'>
|
||||
<td>测试用例</td>
|
||||
<td></td>
|
||||
<td class="text-center">4</td>
|
||||
<td class="text-center">4</td>
|
||||
<td class="text-center">0</td>
|
||||
<td class="text-center">0</td>
|
||||
<td class="text-center">3.008秒</td>
|
||||
<td class="text-center"><a href="javascript:showClassDetail('c1',4)" class="detail" id='c1'>查看全部</a></td>
|
||||
</tr>
|
||||
|
||||
<tr id='pt1_1' class='hiddenRow'>
|
||||
<td class='passedCase' style="vertical-align: middle"><div class='testcase'>test0001_login2</div></td>
|
||||
<td style="vertical-align: middle">P0:测试正常登录</td>
|
||||
<td colspan='5' align='center'>
|
||||
<button id='btn_pt1_1' type="button" class="btn btn-xs" data-toggle="collapse" data-target='#div_pt1_1'>通过</button>
|
||||
<div id='div_pt1_1' class="collapse in">
|
||||
<pre style="text-align:left;font-family:monospace;font-size:12px;color:#119611">pt1_1:
|
||||
2022-08-21 02:45:51,565 - D: test0001_login2
|
||||
2022-08-21 02:45:51,902 - D:
|
||||
[->]
|
||||
GET / HTTP/1.1
|
||||
Host: www.fanscloud.net
|
||||
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
|
||||
Accept-Encoding: gzip, deflate
|
||||
Accept: */*
|
||||
Connection: keep-alive
|
||||
|
||||
|
||||
[<-]
|
||||
HTTP/1.1 200 OK
|
||||
Server: nginx
|
||||
Date: Sat, 20 Aug 2022 18:45:51 GMT
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Transfer-Encoding: chunked
|
||||
Connection: keep-alive
|
||||
Vary: Accept-Encoding
|
||||
Content-Encoding: gzip
|
||||
|
||||
<!doctype html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>阿凡的Blog🌿</title>
|
||||
<meta name="keywo ... [MORE 98% OMITTED HERE]
|
||||
</pre>
|
||||
</div>
|
||||
</td>
|
||||
<td class='passedCase' style="vertical-align: middle"></td>
|
||||
</tr>
|
||||
|
||||
<tr id='pt1_2' class='hiddenRow'>
|
||||
<td class='passedCase' style="vertical-align: middle"><div class='testcase'>test0002_login4</div></td>
|
||||
<td style="vertical-align: middle">P0:测试正常登录</td>
|
||||
<td colspan='5' align='center'>
|
||||
<button id='btn_pt1_2' type="button" class="btn btn-xs" data-toggle="collapse" data-target='#div_pt1_2'>通过</button>
|
||||
<div id='div_pt1_2' class="collapse in">
|
||||
<pre style="text-align:left;font-family:monospace;font-size:12px;color:#119611">pt1_2:
|
||||
2022-08-21 02:45:52,410 - D: test0002_login4
|
||||
2022-08-21 02:45:52,709 - D:
|
||||
[->]
|
||||
GET / HTTP/1.1
|
||||
Host: www.fanscloud.net
|
||||
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
|
||||
Accept-Encoding: gzip, deflate
|
||||
Accept: */*
|
||||
Connection: keep-alive
|
||||
|
||||
|
||||
[<-]
|
||||
HTTP/1.1 200 OK
|
||||
Server: nginx
|
||||
Date: Sat, 20 Aug 2022 18:45:52 GMT
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Transfer-Encoding: chunked
|
||||
Connection: keep-alive
|
||||
Vary: Accept-Encoding
|
||||
Content-Encoding: gzip
|
||||
|
||||
<!doctype html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>阿凡的Blog🌿</title>
|
||||
<meta name="keywo ... [MORE 98% OMITTED HERE]
|
||||
</pre>
|
||||
</div>
|
||||
</td>
|
||||
<td class='passedCase' style="vertical-align: middle"></td>
|
||||
</tr>
|
||||
|
||||
<tr id='pt1_3' class='hiddenRow'>
|
||||
<td class='passedCase' style="vertical-align: middle"><div class='testcase'>test0003_login1</div></td>
|
||||
<td style="vertical-align: middle">P1:测试正常登录</td>
|
||||
<td colspan='5' align='center'>
|
||||
<button id='btn_pt1_3' type="button" class="btn btn-xs" data-toggle="collapse" data-target='#div_pt1_3'>通过</button>
|
||||
<div id='div_pt1_3' class="collapse in">
|
||||
<pre style="text-align:left;font-family:monospace;font-size:12px;color:#119611">pt1_3:
|
||||
2022-08-21 02:45:53,136 - D: test0003_login1
|
||||
2022-08-21 02:45:53,426 - D:
|
||||
[->]
|
||||
GET / HTTP/1.1
|
||||
Host: www.fanscloud.net
|
||||
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
|
||||
Accept-Encoding: gzip, deflate
|
||||
Accept: */*
|
||||
Connection: keep-alive
|
||||
|
||||
|
||||
[<-]
|
||||
HTTP/1.1 200 OK
|
||||
Server: nginx
|
||||
Date: Sat, 20 Aug 2022 18:45:53 GMT
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Transfer-Encoding: chunked
|
||||
Connection: keep-alive
|
||||
Vary: Accept-Encoding
|
||||
Content-Encoding: gzip
|
||||
|
||||
<!doctype html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>阿凡的Blog🌿</title>
|
||||
<meta name="keywo ... [MORE 98% OMITTED HERE]
|
||||
</pre>
|
||||
</div>
|
||||
</td>
|
||||
<td class='passedCase' style="vertical-align: middle"></td>
|
||||
</tr>
|
||||
|
||||
<tr id='pt1_4' class='hiddenRow'>
|
||||
<td class='passedCase' style="vertical-align: middle"><div class='testcase'>test0004_login3</div></td>
|
||||
<td style="vertical-align: middle">P1:测试正常登录</td>
|
||||
<td colspan='5' align='center'>
|
||||
<button id='btn_pt1_4' type="button" class="btn btn-xs" data-toggle="collapse" data-target='#div_pt1_4'>通过</button>
|
||||
<div id='div_pt1_4' class="collapse in">
|
||||
<pre style="text-align:left;font-family:monospace;font-size:12px;color:#119611">pt1_4:
|
||||
2022-08-21 02:45:53,883 - D: test0004_login3
|
||||
2022-08-21 02:45:54,188 - D:
|
||||
[->]
|
||||
GET / HTTP/1.1
|
||||
Host: www.fanscloud.net
|
||||
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
|
||||
Accept-Encoding: gzip, deflate
|
||||
Accept: */*
|
||||
Connection: keep-alive
|
||||
|
||||
|
||||
[<-]
|
||||
HTTP/1.1 200 OK
|
||||
Server: nginx
|
||||
Date: Sat, 20 Aug 2022 18:45:54 GMT
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Transfer-Encoding: chunked
|
||||
Connection: keep-alive
|
||||
Vary: Accept-Encoding
|
||||
Content-Encoding: gzip
|
||||
|
||||
<!doctype html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>阿凡的Blog🌿</title>
|
||||
<meta name="keywo ... [MORE 98% OMITTED HERE]
|
||||
</pre>
|
||||
</div>
|
||||
</td>
|
||||
<td class='passedCase' style="vertical-align: middle"></td>
|
||||
</tr>
|
||||
|
||||
<tr id='total_row' class="text-center active">
|
||||
<td colspan='2'>总计</td>
|
||||
<td>4</td>
|
||||
<td>4</td>
|
||||
<td>0</td>
|
||||
<td>0</td>
|
||||
<td>3.008秒</td>
|
||||
<td>通过:100.00%</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<div id='footer'> </div>
|
||||
<div id="toTop" style="position:fixed;right:50px; bottom:30px; width:20px; height:20px;cursor:pointer; display: none">
|
||||
<a>
|
||||
<span class="glyphicon glyphicon-eject" style = "font-size:28px;color:#b0b0b0" aria-hidden="true">
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div style='width: auto; height: auto; border: 1px solid #e3e3e3; text-align: center; color: #505050; padding: 4px 0px 4px 0px;'>
|
||||
<img src='' style='width: auto; height: auto; max-height: 40px;'>
|
||||
<a href='#' style='font-size: 14px; color: #505050; text-align: center|bottom;'></a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -604,9 +604,7 @@ class TestCase:
|
|||
raise Exception('Pre-exec case cannot use data files set.')
|
||||
self.pre_executed_list.append(case_id)
|
||||
self._test_unit(func_name=func_name, data=data)
|
||||
# self.__getattribute__(func_name)(data=data)
|
||||
self._test_unit(func_name=func_name, data=main_case, main=True)
|
||||
# self.__getattribute__(func_name)(data=main_case, main=True)
|
||||
self._l and self._l.clear()
|
||||
write_test_result(main_case_object_cell, 'Passed')
|
||||
except AssertionError:
|
||||
|
@ -785,6 +783,6 @@ if __name__ == '__main__':
|
|||
testSuite = unittest.TestSuite()
|
||||
for obj in config['suite']:
|
||||
testSuite.addTest(unittest.makeSuite(
|
||||
testCaseClass=TestCase(workbook=obj['workbook'], testcase=obj['testcase'], module=obj['module'], caseid=obj['caseid'], testlves=obj['levels'], organize_mode=obj['organize'], write_test_result=obj['result']).main(), prefix='test'
|
||||
testCaseClass=TestCase(workbook=obj['workbook'] or './.xlsx', testcase=obj['testcase'] or '测试用例', module=obj['module'], caseid=obj['caseid'], testlves=obj['levels'], organize_mode=obj['organize'], write_test_result=obj['result']).main(), prefix='test'
|
||||
))
|
||||
HTMLTestRunner(verbosity=config['verbosity'], report=abs_path(config['report'] or None), log=abs_path(config['log'] or None), title=config['title'] or None, description=config['description'] or None).run(testSuite)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import os
|
||||
import sys
|
||||
import time
|
||||
import threading
|
||||
from Base.Class.GUI import *
|
||||
|
@ -121,7 +120,7 @@ if __name__ == '__main__':
|
|||
window.mainloop()
|
||||
|
||||
_root = _Window('接口自动化测试', w=572, h=450, bg=_cl[0])
|
||||
_ct.append(_root.Labels(row=0, col=0, font=_ft, bg=_cl[0], fg=_cl[1], text='测试用例'))
|
||||
_ct.append(_root.Labels(row=0, col=0, font=_ft, bg=_cl[0], fg=_cl[1], text='用例文件'))
|
||||
_ct.append(_root.Entrys(row=0, col=1, font=_ft, bg=_cl[1], fg=_cl[2], w=54, readonly=True, text=''))
|
||||
_ct.append(_root.Button(row=0, col=2, font=_ft, bg=_cl[0], fg=_cl[1], text='选择文件', function=_root.open_testcase))
|
||||
_ct.append(_root.Labels(row=1, col=0, font=_ft, bg=_cl[0], fg=_cl[1], text='用例名称'))
|
||||
|
@ -141,7 +140,7 @@ if __name__ == '__main__':
|
|||
_ct.append(_root.Labels(row=8, col=0, font=_ft, bg=_cl[0], fg=_cl[1], text='报告输出路径'))
|
||||
_ct.append(_root.Entrys(row=8, col=1, font=_ft, bg=_cl[1], fg=_cl[2], w=54, readonly=True, text=''))
|
||||
_ct.append(_root.Button(row=8, col=2, font=_ft, bg=_cl[0], fg=_cl[1], text='选择目录', function=_root.save_report))
|
||||
_ct.append(_root.Labels(row=9, col=0, font=_ft, bg=_cl[0], fg=_cl[1], text='报告输出路径'))
|
||||
_ct.append(_root.Labels(row=9, col=0, font=_ft, bg=_cl[0], fg=_cl[1], text='日志输出路径'))
|
||||
_ct.append(_root.Entrys(row=9, col=1, font=_ft, bg=_cl[1], fg=_cl[2], w=54, readonly=True, text=''))
|
||||
_ct.append(_root.Button(row=9, col=2, font=_ft, bg=_cl[0], fg=_cl[1], text='选择目录', function=_root.save_log))
|
||||
_ct.append(_root.Labels(row=10, col=0, font=_ft, bg=_cl[0], fg=_cl[1], text='报告标题'))
|
||||
|
|
Loading…
Reference in New Issue