863 lines
36 KiB
Python
863 lines
36 KiB
Python
from flask import Blueprint,render_template, jsonify, request, redirect
|
||
from app import log
|
||
from app.view import viewutil,user
|
||
from app.db import test_case_manage,test_batch_manage,test_suite_manage,test_keyword_manage
|
||
import pyecharts
|
||
|
||
mod = Blueprint('uitest', __name__,
|
||
template_folder='templates/uitest')
|
||
|
||
|
||
@mod.route('/test_suites')
|
||
@user.authorize
|
||
def test_suite():
|
||
|
||
return render_template("uitest/test_suite.html")
|
||
|
||
@mod.route('/test_cases')
|
||
@user.authorize
|
||
def test_cases():
|
||
|
||
return render_template("uitest/test_cases.html")
|
||
|
||
@mod.route('/add_test_case', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def save_new_test_case():
|
||
log.log().logger.info(request)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
return render_template("uitest/new_test_cases.html")
|
||
if request.method == 'POST':
|
||
info = request.form
|
||
log.log().logger.info('info : %s' %info)
|
||
name = viewutil.getInfoAttribute(info,'name')
|
||
module = viewutil.getInfoAttribute(info,'module')
|
||
description = viewutil.getInfoAttribute(info,'description')
|
||
steps = viewutil.getInfoAttribute(info,'steps')
|
||
log.log().logger.info("steps: %s" %steps)
|
||
steps=steps.replace('"',"'")
|
||
log.log().logger.info("steps: %s" %steps)
|
||
type = viewutil.getInfoAttribute(info,'type')
|
||
if module == '' or name == '' or steps=='' or type=='':
|
||
return '必填字段不得为空!'
|
||
else:
|
||
if type=='公共用例':
|
||
isPublic = 1
|
||
else:
|
||
isPublic = 0
|
||
test_case_manage.test_case_manage().new_test_case(module, name, steps, description, isPublic)
|
||
# return render_template("test_cases.html")
|
||
return redirect('test_cases')
|
||
|
||
@mod.route('/edit_test_case', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def edit_test_case():
|
||
log.log().logger.info(request)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
log.log().logger.info('id: %s'%id)
|
||
return render_template("uitest/edit_test_cases2.html", id=id)
|
||
if request.method == 'POST':
|
||
info = request.form
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
name = viewutil.getInfoAttribute(info,'name')
|
||
module = viewutil.getInfoAttribute(info,'module')
|
||
description = viewutil.getInfoAttribute(info,'description')
|
||
steps = viewutil.getInfoAttribute(info,'steps')
|
||
log.log().logger.info("steps: %s" %steps)
|
||
steps=steps.replace('"',"'")
|
||
log.log().logger.info("steps: %s" %steps)
|
||
type = viewutil.getInfoAttribute(info,'type')
|
||
if module == '' or name == '' or steps=='' or type=='':
|
||
return '必填字段不得为空!'
|
||
else:
|
||
if type=='公共用例':
|
||
isPublic = 1
|
||
else:
|
||
isPublic = 0
|
||
test_case_manage.test_case_manage().update_test_case(id, ['module', 'name', 'steps', 'description', 'isPublicFunction'], [module, name, steps, description, isPublic])
|
||
return render_template("uitest/test_batch2.html",id=id,type='test_suite')
|
||
|
||
@mod.route('/copy_test_case', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def copy_test_case():
|
||
log.log().logger.info(request)
|
||
log.log().logger.info(request.method)
|
||
# log.log().logger.info(request.value)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
result = jsonify({'code': 500, 'msg': 'should be get!'})
|
||
return result
|
||
if request.method == 'POST':
|
||
info = request.form
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
log.log().logger.info(id)
|
||
if id=='':
|
||
result = jsonify({'code': 500, 'msg': 'test case is not found!'})
|
||
else:
|
||
result0 = test_case_manage.test_case_manage().copy_test_case(id)
|
||
if result0:
|
||
result = jsonify({'code': 200, 'msg': 'copy success!'})
|
||
else:
|
||
result = jsonify({'code': 500, 'msg': 'test case is not found!'})
|
||
return result
|
||
|
||
@mod.route('/copy_test_suite', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def copy_test_suite():
|
||
log.log().logger.info(request)
|
||
log.log().logger.info(request.method)
|
||
# log.log().logger.info(request.value)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
result = jsonify({'code': 500, 'msg': 'should be get!'})
|
||
return result
|
||
if request.method == 'POST':
|
||
info = request.form
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
log.log().logger.info("id: %s" %id)
|
||
if id=='':
|
||
result = jsonify({'code': 500, 'msg': 'test suite is not found!'})
|
||
else:
|
||
import random, time
|
||
batchId = str(random.randint(10000, 99999)) + str(time.time())
|
||
test_suite_manage.test_suite_manage().copy_test_suite(id, batchId)
|
||
newId = test_suite_manage.test_suite_manage().show_test_suites(["batchId"], [batchId], ['id'], 1)
|
||
log.log().logger.info('newid %s' %newId)
|
||
if len(newId):
|
||
ext = newId[0]['id']
|
||
log.log().logger.info('ext is: %s, id is: %s' %(ext, id))
|
||
if ext !='0':
|
||
test_batch_manage.test_batch_manage().copy_test_batch(ext, id)
|
||
message = 'success!'
|
||
code = 200
|
||
result = jsonify({'code': 200, 'msg': 'copy success!'})
|
||
else:
|
||
result = jsonify({'code': 500, 'msg': 'test suite is not found!'})
|
||
return result
|
||
|
||
@mod.route('/delete_test_case', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def delete_test_case():
|
||
log.log().logger.info(request)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
log.log().logger.info('id: %s' %id)
|
||
return render_template("uitest/test_cases.html")
|
||
if request.method == 'POST':
|
||
info = request.form
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
act = viewutil.getInfoAttribute(info, 'act')
|
||
if act == 'del':
|
||
test_case_manage.test_case_manage().update_test_case(id, ['status'], [0])
|
||
code = 200
|
||
message = 'delete success!'
|
||
else:
|
||
code=500
|
||
message = 'act is not del!'
|
||
result = jsonify({'code': code, 'msg': message})
|
||
return result,{'Content-Type': 'application/json'}
|
||
|
||
@mod.route('/test_case.json', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def search_test_cases():
|
||
if request.method == 'POST':
|
||
log.log().logger.info('post')
|
||
if request.method == 'GET':
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
limit = info.get('limit', 10) # 每页显示的条数
|
||
offset = info.get('offset', 0) # 分片数,(页码-1)*limit,它表示一段数据的起点
|
||
log.log().logger.info('get %s' %limit)
|
||
log.log().logger.info('get offset %s' %offset)
|
||
id = viewutil.getInfoAttribute(info,'id')
|
||
module = viewutil.getInfoAttribute(info, 'module')
|
||
type = viewutil.getInfoAttribute(info, 'type')
|
||
log.log().logger.info('module: %s' %module)
|
||
module = module.split(',')
|
||
log.log().logger.info(module)
|
||
name = viewutil.getInfoAttribute(info, 'name')
|
||
conditionList = ['name']
|
||
valueList = [name]
|
||
if type == 'unattach' and 'public' in module:
|
||
module.remove('public')
|
||
elif type!='test_case':
|
||
if len(module) !=0 and module[0] != 'All' and module[0] != '':
|
||
conditionList.append('module')
|
||
valueList.append(module)
|
||
log.log().logger.info('info content: id- %s, module - %s, name - %s, type - %s' %(id,module, name, type))
|
||
else:
|
||
conditionList = ['id']
|
||
valueList = [id]
|
||
log.log().logger.info('info content: id- %s, module - %s, name - %s, type - %s' %(id,module,name, type))
|
||
# else:
|
||
fieldlist = []
|
||
rows = 1000
|
||
if type =='unattach':
|
||
caseList = test_case_manage.test_case_manage().show_test_cases_unattach(id, conditionList, valueList, fieldlist, rows)
|
||
else:
|
||
caseList = test_case_manage.test_case_manage().show_test_cases(conditionList, valueList, fieldlist, rows)
|
||
log.log().logger.info(caseList)
|
||
data = caseList
|
||
if type=='test_case':
|
||
data1 = jsonify({'total': len(data), 'rows': data[0]})
|
||
else:
|
||
data1 = jsonify({'total': len(data), 'rows': data[int(offset):int(offset)+int(limit)]})
|
||
log.log().logger.info('data1: %s' %data1)
|
||
return data1,{'Content-Type': 'application/json'}
|
||
|
||
|
||
@mod.route('/test_suite.json', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def search_test_suite():
|
||
if request.method == 'POST':
|
||
log.log().logger.info('post')
|
||
if request.method == 'GET':
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
limit = info.get('limit', 10) # 每页显示的条数
|
||
offset = info.get('offset', 0) # 分片数,(页码-1)*limit,它表示一段数据的起点
|
||
log.log().logger.info('get %s' %limit)
|
||
log.log().logger.info('get offset %s' %offset)
|
||
id = viewutil.getInfoAttribute(info,'id')
|
||
type = viewutil.getInfoAttribute(info, 'type')
|
||
log.log().logger.info('type %s' %type)
|
||
run_type = viewutil.getInfoAttribute(info, 'run_type')
|
||
status = viewutil.getInfoAttribute(info, 'status')
|
||
name = viewutil.getInfoAttribute(info, 'name')
|
||
if id =='':
|
||
if status == 'All':
|
||
status = ''
|
||
log.log().logger.info('info content: %s, %s, %s, %s' %(id,status,run_type, name))
|
||
conditionList = ['status','run_type','name']
|
||
valueList = [status,run_type,name]
|
||
else:
|
||
if type == 'testview':
|
||
statusList = test_batch_manage.test_batch_manage().show_test_batch_status(id)
|
||
else:
|
||
statusList = []
|
||
log.log().logger.info('info content: %s, %s, %s, %s' %(id,status,run_type, name))
|
||
conditionList = ['id']
|
||
valueList = [id]
|
||
fieldlist = []
|
||
rows = 1000
|
||
caseList = test_suite_manage.test_suite_manage().show_test_suites(conditionList, valueList, fieldlist, rows)
|
||
log.log().logger.info(caseList)
|
||
data = caseList
|
||
if id !='':
|
||
data1 = jsonify({'total': len(data), 'rows': data[0],'status':statusList})
|
||
else:
|
||
data1 = jsonify({'total': len(data), 'rows': data[int(offset):int(offset)+int(limit)]})
|
||
log.log().logger.info('data1: %s' %data1)
|
||
return data1,{'Content-Type': 'application/json'}
|
||
|
||
@mod.route('/add_test_suite.json', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def save_new_test_suite():
|
||
log.log().logger.info(request)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
return render_template("uitest/new_test_suite.html")
|
||
if request.method == 'POST':
|
||
info = request.values
|
||
log.log().logger.info('info :%s' %info)
|
||
name = viewutil.getInfoAttribute(info,'name')
|
||
run_type = viewutil.getInfoAttribute(info,'run_type')
|
||
description = viewutil.getInfoAttribute(info,'description')
|
||
if run_type == '' or name == '' :
|
||
message = '必填字段不得为空!'
|
||
code = 500
|
||
else:
|
||
import random, time
|
||
batchId = str(random.randint(10000, 99999)) + str(time.time())
|
||
test_suite_manage.test_suite_manage().new_test_suite(name, run_type, description, batchId)
|
||
newId = test_suite_manage.test_suite_manage().show_test_suites(["batchId"], [batchId], ['id'], 1)
|
||
log.log().logger.info('newid %s' %newId)
|
||
if len(newId):
|
||
ext=newId[0]['id']
|
||
log.log().logger.info('ext %s' %ext)
|
||
message = 'success!'
|
||
code = 200
|
||
# return redirect('attach_test_batch?test_suite_id=%s' %ext)
|
||
else:
|
||
ext=''
|
||
message = 'add failed!'
|
||
code = 500
|
||
result = jsonify({'code': code, 'msg': message,'ext':ext})
|
||
log.log().logger.info(result)
|
||
# log.log().logger.info('code is : %s'%result['code'])
|
||
return result
|
||
|
||
@mod.route('/add_test_suite', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def add_test_suite():
|
||
log.log().logger.info(request)
|
||
return render_template("uitest/new_test_suite.html")
|
||
|
||
|
||
@mod.route('/test_batch.json', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def search_test_batch():
|
||
if request.method == 'POST':
|
||
log.log().logger.info('post')
|
||
if request.method == 'GET':
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
limit = info.get('limit', 10) # 每页显示的条数
|
||
offset = info.get('offset', 0) # 分片数,(页码-1)*limit,它表示一段数据的起点
|
||
log.log().logger.info('get %s' %limit)
|
||
log.log().logger.info('get offset %s' %offset)
|
||
id = viewutil.getInfoAttribute(info,'id')
|
||
name = viewutil.getInfoAttribute(info, 'name')
|
||
status = viewutil.getInfoAttribute(info, 'status')
|
||
module = viewutil.getInfoAttribute(info, 'module')
|
||
ipVal = viewutil.getInfoAttribute(info, 'ipVal')
|
||
browser_type = viewutil.getInfoAttribute(info, 'browser_type')
|
||
type = viewutil.getInfoAttribute(info, 'type')
|
||
log.log().logger.info('module: %s' %module)
|
||
log.log().logger.info('ipVal %s' %ipVal)
|
||
module = module.split(',')
|
||
log.log().logger.info(module)
|
||
valueList = []
|
||
conditionList = []
|
||
if id == '':
|
||
data1 = jsonify({'total': 0, 'rows': []})
|
||
else:
|
||
if name != '':
|
||
conditionList.append('name')
|
||
valueList.append(name)
|
||
if status != '':
|
||
conditionList.append('status')
|
||
valueList.append(status)
|
||
if len(module) !=0 and module[0] != 'All' and module[0] != '':
|
||
conditionList.append('module')
|
||
valueList.append(module)
|
||
ipList = ipVal.split(',')
|
||
for j in range(len(ipList)):
|
||
if ipList[j] !='':
|
||
conditionList.append('ip')
|
||
valueList.append(ipList[j])
|
||
fieldlist = []
|
||
rows = 1000
|
||
if type == "" or type=='test_suite':
|
||
conditionList.append('test_suite_id')
|
||
valueList.append(id)
|
||
caseList = test_batch_manage.test_batch_manage().show_test_batch(conditionList, valueList, fieldlist, rows)
|
||
log.log().logger.info("caseList %s" %caseList)
|
||
data = caseList
|
||
elif type=='test_case':
|
||
conditionList.append('test_case_id')
|
||
valueList.append(id)
|
||
caseList = test_batch_manage.test_batch_manage().show_test_batch(conditionList, valueList, fieldlist, rows)
|
||
log.log().logger.info(caseList)
|
||
data = caseList
|
||
else:
|
||
caseList = test_case_manage.test_case_manage().show_test_cases_unattach(id, conditionList, valueList, fieldlist, rows)
|
||
log.log().logger.info(caseList)
|
||
data = caseList
|
||
data1 = jsonify({'total': len(data), 'rows': data[int(offset):int(offset)+int(limit)]})
|
||
log.log().logger.info('data1: %s' %data1)
|
||
return data1,{'Content-Type': 'application/json'}
|
||
|
||
@mod.route('/test_batch_detail_old', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def test_batch_detail():
|
||
log.log().logger.info(request)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'test_suite_id')
|
||
log.log().logger.info('id: %s' %id)
|
||
return render_template("uitest/test_batch_detail.html",id=id)
|
||
# return render_template("uitest/test_batch_report.html", id=id)
|
||
else:
|
||
return render_template('test_suite.html')
|
||
|
||
@mod.route('/attach_test_batch', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def attach_test_batch():
|
||
log.log().logger.info(request)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'test_suite_id')
|
||
log.log().logger.info('id: %s' %id)
|
||
return render_template("uitest/attach_test_batch.html",id=id)
|
||
else:
|
||
return render_template("uitest/test_suite.html")
|
||
|
||
@mod.route('/attach_test_batch.json', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def attach_test_batch_to_suite():
|
||
log.log().logger.info(request)
|
||
if request.method == 'POST':
|
||
log.log().logger.info('post')
|
||
result = jsonify({'code': 500, 'msg': 'post'})
|
||
return result
|
||
else:
|
||
log.log().logger.info(request.values)
|
||
# log.log().logger.info(request.form)
|
||
info = request.values
|
||
test_suite_id = viewutil.getInfoAttribute(info,'test_suite_id')
|
||
ipVal = viewutil.getInfoAttribute(info, 'ipVal')
|
||
browser_list = viewutil.getInfoAttribute(info, 'browser_list')
|
||
browser_list = browser_list.split(',')
|
||
rows = viewutil.getInfoAttribute(info,'datarow')
|
||
log.log().logger.info("ipVal %s" %ipVal)
|
||
log.log().logger.info('%s, %s' %(test_suite_id,rows))
|
||
rows = rows.split(',')
|
||
log.log().logger.info(rows)
|
||
idrows = []
|
||
for i in range(1,len(rows)):
|
||
idrows.append(rows[i])
|
||
log.log().logger.info(idrows)
|
||
ipList = ipVal.split(',')
|
||
for j in range(len(ipList)):
|
||
if ipList[j] == '':
|
||
result0 = test_batch_manage.test_batch_manage().batch_new_testcase(test_suite_id, idrows,browser_type_list=browser_list)
|
||
else:
|
||
result0 = test_batch_manage.test_batch_manage().batch_new_testcase_IP(test_suite_id, idrows, ipList[j])
|
||
if result0 == 0:
|
||
result = jsonify({'code': 500, 'msg': 'error, please check selected test cases!'})
|
||
else:
|
||
result = jsonify({'code': 200, 'msg': 'message'})
|
||
return result
|
||
|
||
|
||
@mod.route('/general_test_batch', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def general_test_batch():
|
||
log.log().logger.info(request)
|
||
if request.method == 'POST':
|
||
log.log().logger.info('post')
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'test_suite_id')
|
||
log.log().logger.info('id: %s' %id)
|
||
return render_template("uitest/general_test_batch.html",id=id)
|
||
if request.method == 'POST':
|
||
info = request.form
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
name = viewutil.getInfoAttribute(info,'name')
|
||
run_type = viewutil.getInfoAttribute(info,'run_type')
|
||
description = viewutil.getInfoAttribute(info,'description')
|
||
if run_type == '' or name == '':
|
||
message = '必填字段不得为空!'
|
||
code = 500
|
||
else:
|
||
test_suite_manage.test_suite_manage().update_test_suite(id, ['name', 'run_type', 'description'], [name, run_type, description])
|
||
message = 'success!'
|
||
code = 200
|
||
result = jsonify({'code': code, 'msg': message})
|
||
return render_template("uitest/test_suite.html")
|
||
|
||
@mod.route('/edit_test_suite', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def edit_test_suite():
|
||
log.log().logger.info(request)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
log.log().logger.info('id: %s' %id)
|
||
return render_template("uitest/edit_test_suite.html",id=id)
|
||
if request.method == 'POST':
|
||
info = request.form
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
name = viewutil.getInfoAttribute(info,'name')
|
||
run_type = viewutil.getInfoAttribute(info,'run_type')
|
||
description = viewutil.getInfoAttribute(info,'description')
|
||
if run_type == '' or name == '':
|
||
message = '必填字段不得为空!'
|
||
code = 500
|
||
else:
|
||
test_suite_manage.test_suite_manage().update_test_suite(id, ['name', 'run_type', 'description'], [name, run_type, description])
|
||
message = 'success!'
|
||
code = 200
|
||
result = jsonify({'code': code, 'msg': message})
|
||
return render_template("uitest/test_suite.html")
|
||
|
||
@mod.route('/delete_test_suite', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def delete_test_suite():
|
||
log.log().logger.info(request)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
log.log().logger.info('id: %s' %id)
|
||
return render_template("uitest/test_suite.html")
|
||
if request.method == 'POST':
|
||
info = request.form
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
act = viewutil.getInfoAttribute(info, 'act')
|
||
if act == 'del':
|
||
test_suite_manage.test_suite_manage().update_test_suite(id, ['isDeleted'], [1])
|
||
code = 200
|
||
message = 'delete success!'
|
||
else:
|
||
code=500
|
||
message = 'act is not del!'
|
||
result = jsonify({'code': code, 'msg': message})
|
||
return result,{'Content-Type': 'application/json'}
|
||
|
||
|
||
@mod.route('/view_test_suite_screenshot', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def view_test_suite_screenshot():
|
||
log.log().logger.info(request)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
test_batch_id = viewutil.getInfoAttribute(info, 'test_batch_id')
|
||
type = viewutil.getInfoAttribute(info, 'type')
|
||
index = viewutil.getInfoAttribute(info, 'index')
|
||
if index=='':
|
||
index = 1
|
||
else:
|
||
index = int(index)+1
|
||
log.log().logger.info('id: %s' %id)
|
||
log.log().logger.info('test_batch_id: %s' %test_batch_id)
|
||
data = test_batch_manage.test_batch_manage().show_test_batch(['id'], [id], ['screenshot'], 1)
|
||
log.log().logger.info(data)
|
||
if data[0]['screenshot'] is None:
|
||
imgUrl0 = []
|
||
elif len(data[0]['screenshot']):
|
||
log.log().logger.info('%s, %s' %(len(data[0]['screenshot']),data[0]['screenshot']))
|
||
imgUrl0 = data[0]['screenshot'].split("'")
|
||
else:
|
||
imgUrl0 = []
|
||
imgUrl = []
|
||
imgTitle=[]
|
||
for i in range(len(imgUrl0)):
|
||
if i>0 and i<len(imgUrl0)-1 and len(imgUrl0[i])>5:
|
||
imgUrl.append(imgUrl0[i].replace('\\','/'))
|
||
imgTitle.append(imgUrl0[i])
|
||
log.log().logger.info('%s, %s, %s '%(imgUrl0[i],len(imgUrl0[i]),i))
|
||
|
||
if len(imgUrl)== 0:
|
||
return render_template('uitest/view_test_suite_screenshot.html',imgTitle='no screenshot!', imgCnt =len(imgUrl),id = id,test_batch_id=test_batch_id,type=type )
|
||
else:
|
||
log.log().logger.info(imgUrl)
|
||
index = index % len(imgUrl)
|
||
return render_template('uitest/view_test_suite_screenshot.html', imgUrl =imgUrl[index], index = index, id = id,imgTitle = imgTitle[index],imgCnt =len(imgUrl),test_batch_id=test_batch_id,type=type)
|
||
|
||
|
||
|
||
@mod.route('/runtest.json', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def runtest():
|
||
log.log().logger.info(request)
|
||
if request.method == 'POST':
|
||
log.log().logger.info('post')
|
||
result = jsonify({'code': 500, 'msg': 'should be get!'})
|
||
return result
|
||
else:
|
||
log.log().logger.info(request.values)
|
||
# log.log().logger.info(request.form)
|
||
info = request.values
|
||
id = viewutil.getInfoAttribute(info,'id')
|
||
test_case_id = viewutil.getInfoAttribute(info,'test_case_id')
|
||
ipVal = viewutil.getInfoAttribute(info, 'ipVal')
|
||
type = viewutil.getInfoAttribute(info,'type')
|
||
if type == 'test_suite':
|
||
test_suite_manage.test_suite_manage().new_test_run_list(id)
|
||
result = jsonify({'code': 200, 'msg': 'success!'})
|
||
elif type =='test_suite_rerun_all':
|
||
ipList = ipVal.split(',')
|
||
for i in range(len(ipList)):
|
||
test_suite_manage.test_suite_manage().new_test_run_list(id)
|
||
if ipList[i] == '':
|
||
test_batch_manage.test_batch_manage().rerun_test_batch(id, 'all')
|
||
else:
|
||
test_batch_manage.test_batch_manage().rerun_test_batch_Ip(id, 'all', ipList[i])
|
||
|
||
result = jsonify({'code': 200, 'msg': 'success!'})
|
||
elif type =='test_suite_rerun_part':
|
||
test_suite_manage.test_suite_manage().new_test_run_list(id)
|
||
test_batch_manage.test_batch_manage().rerun_test_batch(id, 'part')
|
||
result = jsonify({'code': 200, 'msg': 'success!'})
|
||
elif type =='test_batch':
|
||
# test_suite_manage.test_suite_manage().new_test_run_list(id)
|
||
test_batch_manage.test_batch_manage().rerun_test_batch_record(id,test_case_id)
|
||
result = jsonify({'code': 200, 'msg': 'success!'})
|
||
elif type == 'test_case':
|
||
ipList = ipVal.split(',')
|
||
for i in range(len(ipList)):
|
||
if ipList[i] == '':
|
||
test_batch_manage.test_batch_manage().batch_new_testcase('0', [id])
|
||
else:
|
||
test_batch_manage.test_batch_manage().batch_new_testcase_IP('0', [id], str(ipList[i]))
|
||
result = jsonify({'code': 200, 'msg': 'success!'})
|
||
else:
|
||
result = jsonify({'code': 500, 'msg': 'type is not defined!'})
|
||
return result
|
||
|
||
|
||
|
||
@mod.route('/test_case_runhistory', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def test_case_runhistory():
|
||
log.log().logger.info(request)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
log.log().logger.info('id: %s' %id)
|
||
if len(test_case_manage.test_case_manage().show_test_cases(['id'], [id], [], 2))==1:
|
||
return render_template("uitest/test_batch2.html",id=id,type='test_case',test_suite_id='')
|
||
else:
|
||
return render_template("uitest/test_cases.html")
|
||
else:
|
||
return render_template("uitest/test_cases.html")
|
||
|
||
@mod.route('/runall')
|
||
def runall():
|
||
log.log().logger.info(request)
|
||
import os
|
||
os.system('/opt/flask/flask/runall.sh')
|
||
return render_template("index.html")
|
||
|
||
@mod.route('/testkeywords')
|
||
@user.authorize
|
||
def testkeywords():
|
||
|
||
return render_template("uitest/test_keywords.html")
|
||
|
||
|
||
@mod.route('/test_keywords.json', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def test_keywords():
|
||
if request.method == 'POST':
|
||
log.log().logger.info('post')
|
||
if request.method == 'GET':
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
limit = info.get('limit', 10) # 每页显示的条数
|
||
offset = info.get('offset', 0) # 分片数,(页码-1)*limit,它表示一段数据的起点
|
||
log.log().logger.info('get %s' %limit)
|
||
log.log().logger.info('get offset %s' %offset)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
keyword = viewutil.getInfoAttribute(info, 'keyword')
|
||
if id=='':
|
||
conditionList = ['keyword']
|
||
valueList = [keyword]
|
||
else:
|
||
conditionList = ['id']
|
||
valueList = [id]
|
||
fieldlist = []
|
||
rows = 1000
|
||
caseList = test_keyword_manage.test_keyword_manage().show_test_keywords(conditionList, valueList, fieldlist, rows)
|
||
log.log().logger.info(caseList)
|
||
data = caseList
|
||
data1 = jsonify({'total': len(data), 'rows': data})
|
||
log.log().logger.info('data1: %s' %data1)
|
||
return data1,{'Content-Type': 'application/json'}
|
||
|
||
|
||
@mod.route('/add_test_keyword', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def new_test_keyword():
|
||
return render_template("uitest/new_test_keyword.html")
|
||
|
||
|
||
@mod.route('/add_test_keyword.json', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def save_new_test_keyword():
|
||
log.log().logger.info(request)
|
||
info = request.form
|
||
log.log().logger.info('info : %s' %info)
|
||
name = viewutil.getInfoAttribute(info,'name')
|
||
paraCount = viewutil.getInfoAttribute(info,'paraCount')
|
||
description = viewutil.getInfoAttribute(info,'description')
|
||
template = viewutil.getInfoAttribute(info,'template')
|
||
example = viewutil.getInfoAttribute(info, 'example')
|
||
result0 = test_keyword_manage.test_keyword_manage().new_test_keyword(name, paraCount, description, template,example)
|
||
return redirect('/testkeywords')
|
||
|
||
@mod.route('/edit_test_keyword', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def edit_test_keyword():
|
||
log.log().logger.info(request)
|
||
print(request)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
log.log().logger.info('id: %s'%id)
|
||
return render_template("uitest/edit_test_keyword.html",id=id)
|
||
if request.method == 'POST':
|
||
info = request.form
|
||
log.log().logger.info('info : %s' %info)
|
||
print(info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
name = viewutil.getInfoAttribute(info,'name')
|
||
paraCount = viewutil.getInfoAttribute(info,'paraCount')
|
||
description = viewutil.getInfoAttribute(info,'description')
|
||
template = viewutil.getInfoAttribute(info,'template')
|
||
example = viewutil.getInfoAttribute(info, 'example')
|
||
result = test_keyword_manage.test_keyword_manage().update_test_keyword(id,["keyword", "paraCount", "description", "template","example"],[name, paraCount, description, template,example])
|
||
return redirect('/testkeywords')
|
||
|
||
@mod.route('/copy_test_keyword', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def copy_test_keyword():
|
||
log.log().logger.info(request)
|
||
log.log().logger.info(request.method)
|
||
# log.log().logger.info(request.value)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
result = jsonify({'code': 500, 'msg': 'should be get!'})
|
||
return result
|
||
if request.method == 'POST':
|
||
info = request.form
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
log.log().logger.info(id)
|
||
if id=='':
|
||
result = jsonify({'code': 500, 'msg': 'test keyword is not found!'})
|
||
else:
|
||
result0 = test_keyword_manage.test_keyword_manage().copy_test_keyword(id)
|
||
if result0:
|
||
result = jsonify({'code': 200, 'msg': 'copy success!'})
|
||
else:
|
||
result = jsonify({'code': 500, 'msg': 'test keyword is not found!'})
|
||
return result,{'Content-Type': 'application/json'}
|
||
|
||
@mod.route('/delete_test_keyword', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def delete_test_keyword():
|
||
log.log().logger.info(request)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
log.log().logger.info('id: %s' %id)
|
||
return render_template("uitest/test_cases.html")
|
||
if request.method == 'POST':
|
||
info = request.form
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
act = viewutil.getInfoAttribute(info, 'act')
|
||
if act == 'del':
|
||
test_keyword_manage.test_keyword_manage().update_test_keyword(id, ['status'], [0])
|
||
code = 200
|
||
message = 'delete success!'
|
||
else:
|
||
code=500
|
||
message = 'act is not del!'
|
||
result = jsonify({'code': code, 'msg': message})
|
||
return result,{'Content-Type': 'application/json'}
|
||
|
||
@mod.route('/test_batch_runhistory_report', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def test_case_runhistory_report2():
|
||
REMOTE_HOST = "https://pyecharts.github.io/assets/js"
|
||
bar = pyecharts.Pie()
|
||
bar.add("Sports", ["Football", "Basketball", "Baseball", "Tennis", "Swimming"], [23, 34, 45, 56, 67],
|
||
is_more_utils=True)
|
||
|
||
log.log().logger.info(request)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'id')
|
||
log.log().logger.info('id: %s' %id)
|
||
if len(test_case_manage.test_case_manage().show_test_cases(['id'], [id], [], 2))==1:
|
||
return render_template("uitest/test_batch_result.html",id=id,type='test_case',test_suite_id='',
|
||
myechart=bar.render_embed(),host=REMOTE_HOST,script_list=bar.get_js_dependencies())
|
||
else:
|
||
return render_template("uitest/test_cases.html")
|
||
else:
|
||
return render_template("uitest/test_cases.html")
|
||
|
||
|
||
@mod.route('/test_batch_detail', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def test_batch_detail_report():
|
||
REMOTE_HOST = "https://pyecharts.github.io/assets/js"
|
||
bar = pyecharts.Pie()
|
||
bar.width=700
|
||
bar.height=400
|
||
log.log().logger.info(request)
|
||
if request.method == 'GET':
|
||
log.log().logger.info('post')
|
||
info = request.values
|
||
log.log().logger.info('info : %s' %info)
|
||
id = viewutil.getInfoAttribute(info, 'test_suite_id')
|
||
log.log().logger.info('id: %s' %id)
|
||
statusList = test_batch_manage.test_batch_manage().show_test_batch_status(id)
|
||
nameList , valueList = bar.cast(statusList)
|
||
bar.add("results", ['失败','待执行','执行中','成功'], valueList[0:4],
|
||
is_more_utils=True,is_area_show=True,is_label_show=True,legend_pos="50%")
|
||
return render_template("uitest/test_batch_detail_report.html",id=id,
|
||
myechart=bar.render_embed(),host=REMOTE_HOST,script_list=bar.get_js_dependencies())
|
||
# return render_template("uitest/test_batch_report.html", id=id)
|
||
else:
|
||
return render_template('test_suite.html')
|
||
|
||
|
||
@mod.route('/test_public_test_cases.json', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def test_public_test_cases():
|
||
if request.method == 'POST':
|
||
log.log().logger.info('post')
|
||
if request.method == 'GET':
|
||
info = request.values
|
||
log.log().logger.info('info : %s' % info)
|
||
|
||
conditionList = ['id']
|
||
valueList = [id]
|
||
fieldlist = []
|
||
rows = 1000
|
||
caseList = test_case_manage.test_case_manage().show_test_public_cases()
|
||
log.log().logger.info(caseList)
|
||
data = caseList
|
||
data1 = jsonify({'total': len(data), 'rows': data})
|
||
log.log().logger.info('data1: %s' % data1)
|
||
return data1, {'Content-Type': 'application/json'}
|
||
|
||
|
||
@mod.route('/test_keywords_options.json', methods=['POST', 'GET'])
|
||
@user.authorize
|
||
def test_keywords_options():
|
||
if request.method == 'POST':
|
||
log.log().logger.info('post')
|
||
if request.method == 'GET':
|
||
info = request.values
|
||
log.log().logger.info('info : %s' % info)
|
||
|
||
conditionList = ['id']
|
||
valueList = [id]
|
||
fieldlist = []
|
||
rows = 1000
|
||
caseList = test_keyword_manage.test_keyword_manage().show_test_keywords_options()
|
||
log.log().logger.info(caseList)
|
||
data = caseList
|
||
data1 = jsonify({'total': len(data), 'rows': data})
|
||
log.log().logger.info('data1: %s' % data1)
|
||
return data1, {'Content-Type': 'application/json'}
|