autotest_platform/app/view/apinew.py

827 lines
37 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from flask import Blueprint,render_template, jsonify, request,redirect
from app import log
from app.view import viewutil,user
from app.api_new import api_manage
from app.db import test_api_new_manange
mod = Blueprint('apinew', __name__,
template_folder='templates')
#########################api自动化功能开发开始###############################################
#api功能主页
@mod.route('/test_api_new')
@user.authorize
def test_api():
return render_template("apinew/test_api_new.html")
#api查询
@mod.route('/test_api_new.json', methods=['POST', 'GET'])
@user.authorize
def search_test_api():
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)
type = viewutil.getInfoAttribute(info, 'type')
id = viewutil.getInfoAttribute(info, 'id')
name = viewutil.getInfoAttribute(info, 'name')
product = viewutil.getInfoAttribute(info, 'product')
module = viewutil.getInfoAttribute(info, 'module')
conditionList = ['id','name','product','module']
valueList = [id,name,product,module]
fieldlist = []
rows = 1000
caseList = test_api_new_manange.test_api_new_manange().show_test_api(conditionList, valueList, fieldlist, rows,type=type)
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'}
#api新增界面入口与新增成功跳转
@mod.route('/add_test_api_new', methods=['GET'])
@user.authorize
def new_test_api():
log.log().logger.info(request)
if request.method == 'GET':
log.log().logger.info('post')
return render_template("apinew/new_test_api.html")
#api新增界面入口与新增成功跳转
@mod.route('/add_test_api_new.json', methods=['POST'])
@user.authorize
def save_new_test_api():
log.log().logger.info(request)
if request.method == 'POST':
info = request.form
log.log().logger.info('info : %s' %info)
name = viewutil.getInfoAttribute(info, 'name')
description = viewutil.getInfoAttribute(info, 'description')
module = viewutil.getInfoAttribute(info, 'module')
product = viewutil.getInfoAttribute(info, 'product')
url = viewutil.getInfoAttribute(info, 'url')
paras = viewutil.getInfoAttribute(info, 'paras')
osign_list = viewutil.getInfoAttribute(info, 'osign_list')
osign_list=osign_list.replace('[','').replace(']','').replace("'",'').replace(" ",'')
result = test_api_new_manange.test_api_new_manange().new_test_api(product,module,name,url,paras,osign_list,description)
if result:
code = 200
message = 'success'
else:
code = 500
message = 'failed'
data1 = jsonify({'code': code, 'msg': message})
log.log().logger.info('data1: %s' % data1)
return data1, {'Content-Type': 'application/json'}
@mod.route('/split_test_api_url.json', methods=['POST', 'GET'])
@user.authorize
def split_test_api_url():
if request.method == 'POST':
log.log().logger.info('post')
if request.method == 'GET':
info = request.values
log.log().logger.info('info : %s' % info)
url = viewutil.getInfoAttribute(info, 'url')
api_info = api_manage.api_manage().split_api_info(url)
data1 = jsonify(api_info)
log.log().logger.info('data1: %s' % data1)
return data1, {'Content-Type': 'application/json'}
#api删除s
@mod.route('/delete_test_api_new', methods=['POST', 'GET'])
@user.authorize
def delete_test_api():
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("apinew/test_api_new.html")
if request.method == 'POST':
info = request.form
log.log().logger.info('info : %s' %info)
id = viewutil.getInfoAttribute(info, 'id')
result = test_api_new_manange.test_api_new_manange().del_test_api(id)
if result:
code = 200
message = 'delete success!'
else:
code = 500
message = 'please try again!'
result = jsonify({'code': code, 'msg': message})
return result, {'Content-Type': 'application/json'}
#api修改页面入口
@mod.route('/edit_test_api_new', methods=['POST', 'GET'])
@user.authorize
def edit_test_api():
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("apinew/edit_test_api.html", id=id)
#api 修改保存
@mod.route('/update_test_api_new.json', methods=['POST'])
@user.authorize
def update_test_api_new():
log.log().logger.info(request)
if request.method == 'POST':
info = request.form
log.log().logger.info('info : %s' %info)
id = viewutil.getInfoAttribute(info, 'id')
name = viewutil.getInfoAttribute(info, 'name')
description = viewutil.getInfoAttribute(info, 'description')
module = viewutil.getInfoAttribute(info, 'module')
product = viewutil.getInfoAttribute(info, 'product')
url = viewutil.getInfoAttribute(info, 'url')
paras = viewutil.getInfoAttribute(info, 'paras')
osign_list = viewutil.getInfoAttribute(info, 'osign_list')
result = test_api_new_manange.test_api_new_manange().update_test_api(id,fieldlist=['product','module','name','url','paras','osign_list','description'] ,valueList=[product,module,name,url,paras,osign_list,description])
if result:
data1 = jsonify({'code':200})
else:
data1 = jsonify({'code':500})
log.log().logger.info('data1: %s' % data1)
return data1, {'Content-Type': 'application/json'}
# 手工测试某个url 页面
@mod.route('/test_api_new_test', methods=['GET'])
@user.authorize
def test_api_single_test_page():
log.log().logger.info(request)
if request.method == 'GET':
log.log().logger.info(request.values)
info = request.values
id = viewutil.getInfoAttribute(info, 'id')
return render_template('apinew/test_api_case_new_run.html',id=id)
# 手工测试某个url
@mod.route('/test_api_new_run.json', methods=['POST'])
@user.authorize
def test_api_single_test():
log.log().logger.info(request)
if request.method == 'POST':
log.log().logger.info(request.values)
info = request.values
url = viewutil.getInfoAttribute(info, 'url')
import json
from app.api_new import api_manage
response, content = api_manage.api_manage().sendRequest(url)
log.log().logger.info(response)
log.log().logger.info(content)
result = jsonify({'code': 200, 'rows': [{'response': str(response), 'content': content}]})
return result
#重算签名
@mod.route('/test_api_reosign_new.json', methods=['POST', 'GET'])
@user.authorize
def test_api_reosign():
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)
info = request.values
osign_list = viewutil.getInfoAttribute(info, 'osign_list').split(',')
context=viewutil.getInfoAttribute(info, 'context')
import json
context = json.loads(context)
# print(type(context))
# print(context['appId'])
# print(osign,context)
log.log().logger.info('context is : %s' %context)
print(len(osign_list),osign_list,'osign info')
if len(osign_list)>1:
log.log().logger.info('osign is not empty!')
from app.api_new import api_manage
appKey='abc'
context= api_manage.api_manage().api_osign(osign_list=osign_list,para_info=context,appkey=appKey)
log.log().logger.info(context['osign'])
result = jsonify({'code': 200, 'rows': [{'context': str(context)}]})
else:
log.log().logger.info('osign list is empty!')
result = jsonify({'code': 200, 'rows': [{'context': str(context)}]})
return result
#api查询url
@mod.route('/test_api_host.json', methods=['GET'])
@user.authorize
def search_test_api_host_manage():
if request.method == 'GET':
info = request.values
log.log().logger.info('info : %s' %info)
type = viewutil.getInfoAttribute(info, 'type')
from app.api_new import paras
hostList = paras.paraValues().Hosts
data1 = jsonify({'total': len(hostList), 'rows': hostList})
log.log().logger.info('data1: %s' %data1)
return data1, {'Content-Type': 'application/json'}
# #########################api suit自动化功能开发开始###############################################
# #api功能主页
# @mod.route('/test_api_new_suit')
# @user.authorize
# def test_api_suit():
# return render_template("apinew/test_api_new_suit.html")
# #api查询
# @mod.route('/test_api_new_suit.json', methods=['POST', 'GET'])
# @user.authorize
# def search_test_api_suit():
# 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')
# conditionList = ['id','name']
# valueList = [id,name]
# fieldlist = []
# rows = 1000
# caseList = test_api_suit_manage.test_api_suit_manage().show_test_api_suit(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'}
# #api新增界面入口与新增成功跳转
# @mod.route('/add_test_api_suit', methods=['POST', 'GET'])
# @user.authorize
# def save_new_test_api_suit():
# log.log().logger.info(request)
# if request.method == 'GET':
# log.log().logger.info('post')
# return render_template("apinew/new_test_api_suit.html")
# if request.method == 'POST':
# info = request.form
# log.log().logger.info('info : %s' %info)
# name = viewutil.getInfoAttribute(info, 'name')
# description = viewutil.getInfoAttribute(info, 'description')
# apiUrl = viewutil.getInfoAttribute(info, 'apiUrl')
# if name == '':
# return '必填字段不得为空!'
# else:
# test_api_suit_manage.test_api_suit_manage().new_test_api_suit(name, description, '', apiUrl)
# return render_template("apinew/test_api_new_suit.html")
# #api删除
# @mod.route('/delete_test_api_suit', methods=['POST', 'GET'])
# @user.authorize
# def delete_test_api_suit():
# 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("apinew/test_api_new_suit.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_api_suit_manage.test_api_suit_manage().del_test_api_suit(id)
# 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'}
# #api修改
# @mod.route('/edit_test_api_suit', methods=['POST', 'GET'])
# @user.authorize
# def edit_test_api_suit():
# 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("apinew/edit_test_api_suit.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')
# description = viewutil.getInfoAttribute(info, 'description')
# if name == '':
# return '必填字段不得为空!'
# else:
# test_api_suit_manage.test_api_suit_manage().update_test_api_suit(id, ['name', 'description'], [name, description])
# return render_template("apinew/test_api_new_suit.html", id=id)
# #复制
# @mod.route('/copy_test_api_suite', methods=['POST', 'GET'])
# @user.authorize
# def copy_test_api_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
# batchId = str(random.randint(10000, 99999)) + str(time.time())
# #根据ID复制一条记录
# test_api_suit_manage.test_api_suit_manage().copy_test_api_suite(id, batchId)
# #根据batchId返回记录Id
# newId = test_api_suit_manage.test_api_suit_manage().show_test_api_suit(["batchId"], [batchId], ['id'], 1)
# log.log().logger.info('newid %s' %newId)
# if len(newId):
# ext = newId[0]['id']
# log.log().logger.info('ext: %s, id :%s'%(ext, id))
# if ext != '0':
# #根据Id复制批次并插入批次
# test_api_suit_manage.test_api_suit_manage().copy_test_api_batch(ext, id, batchId)
# 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('/attach_test_api_batch', methods=['POST', 'GET'])
# @user.authorize
# def attach_test_api_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("apinew/attach_test_api_batch.html", id=id)
# else:
# return render_template("apinew/test_api_new_suite.html")
#
# # 未关联api
# @mod.route('/test_api_new_no_suit.json', methods=['POST', 'GET'])
# @user.authorize
# def test_api_no_suit():
# 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')
# suite_id = viewutil.getInfoAttribute(info, 'suite_id')
# name = viewutil.getInfoAttribute(info, 'name')
# module = viewutil.getInfoAttribute(info, 'module')
# conditionList = ['id', 'name','module']
# valueList = [id, name,module]
# fieldlist = []
# rows = 1000
# caseList = test_api_suit_manage.test_api_suit_manage().show_test_api_no_suit(conditionList, valueList, fieldlist, rows, suite_id)
# 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('/attach_test_api_batch.json', methods=['POST', 'GET'])
# @user.authorize
# def attach_test_api_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')
# moduleVal = viewutil.getInfoAttribute(info, 'moduleVal')
# rows = viewutil.getInfoAttribute(info, 'datarow')
# log.log().logger.info('test suite id: %s, rows: %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)
# result0 = test_api_suit_manage.test_api_suit_manage().new_test_api_batch_suit(test_suite_id, idrows, moduleVal)
# if result0 == 0:
# result = jsonify({'code': 500, 'msg': 'error, please check selected test cases!'})
# else:
# result = jsonify({'code': 200, 'msg': 'message'})
# return result
# #已关联api主页
# @mod.route('/test_api_new_batch_url', methods=['POST', 'GET'])
# @user.authorize
# def test_api_batch_url():
# log.log().logger.info(request)
# if request.method == 'GET':
# import pyecharts
# REMOTE_HOST = "https://pyecharts.github.io/assets/js"
# bar = pyecharts.Pie()
# bar.width = 700
# bar.height = 400
# log.log().logger.info('post')
# info = request.values
# log.log().logger.info('info : %s' %info)
# batch_id = viewutil.getInfoAttribute(info, 'test_suite_id')
# log.log().logger.info('batch_id: %s' %batch_id)
# resultWait=0
# resultNoPass=0
# resultPass=0
# resultPending =0
# result = test_api_suit_manage.test_api_suit_manage().show_batch_cases_result_group(batch_id=batch_id)
# log.log().logger.info('result is : %s' %result)
# for i in range(len(result)):
# if result[i]['result']==0:
# resultWait = int(result[i]['count'])
# elif result[i]['result']==1:
# resultPass = int(result[i]['count'])
# elif result[i]['result']==2:
# resultNoPass = int(result[i]['count'])
# elif result[i]['result']==3:
# resultPending = int(result[i]['count'])
# log.log().logger.info('%s, %s, %s, %s' %(resultWait,resultNoPass,resultPass,resultPending))
# resultSum = resultWait+resultNoPass+resultPass+resultPending
# if resultSum!=0:
# passRate=str(round(resultPass/resultSum*100,2))+'%'
# else:
# passRate=0
# log.log().logger.info('passRate : %s' %passRate)
# bar.add("results", ['失败','待执行','执行完成','成功'], [resultNoPass,resultWait,resultPending,resultPass],
# is_more_utils=True,is_area_show=True,is_label_show=True,legend_pos="50%")
# return render_template("apinew/test_api_new_batch_url.html", batch_id=batch_id,resultPass=resultPass,resultNoPass=resultNoPass,resultPending=resultPending,resultWait=resultWait,resultSum=resultSum,passRate=passRate,myechart=bar.render_embed(),host=REMOTE_HOST,script_list=bar.get_js_dependencies())
# else:
# return render_template("apinew/test_api_new_suite.html")
#
# #查看本批次执行全部用例
# @mod.route('/test_api_new_batch_all', methods=['POST', 'GET'])
# @user.authorize
# def test_api_batch_all():
# log.log().logger.info(request)
# if request.method == 'GET':
# import pyecharts
# REMOTE_HOST = "https://pyecharts.github.io/assets/js"
# bar = pyecharts.Pie()
# bar.width = 700
# bar.height = 400
# log.log().logger.info('post')
# info = request.values
# log.log().logger.info('info : %s' %info)
# batch_id = viewutil.getInfoAttribute(info, 'test_suite_id')
# log.log().logger.info('batch_id: %s' %batch_id)
# resultWait=0
# resultNoPass=0
# resultPass=0
# resultPending =0
# result = test_api_suit_manage.test_api_suit_manage().show_batch_cases_result_group(batch_id=batch_id)
# log.log().logger.info('result is :', result)
# for i in range(len(result)):
# if result[i]['result']==0:
# resultWait = int(result[i]['count'])
# elif result[i]['result']==1:
# resultPass = int(result[i]['count'])
# elif result[i]['result']==2:
# resultNoPass = int(result[i]['count'])
# elif result[i]['result']==3:
# resultPending = int(result[i]['count'])
# log.log().logger.info('%s, %s, %s, %s' %(resultWait,resultNoPass,resultPass,resultPending))
# resultSum = resultWait+resultNoPass+resultPass+resultPending
# if resultSum!=0:
# passRate=str(round(resultPass/resultSum*100,2))+'%'
# else:
# passRate=0
# log.log().logger.info('passRate : %s' %passRate)
# bar.add("results", ['失败','待执行','执行完成','成功'], [resultNoPass,resultWait,resultPending,resultPass],
# is_more_utils=True,is_area_show=True,is_label_show=True,legend_pos="50%")
# return render_template("apinew/test_api_new_batch_all.html", batch_id=batch_id,resultPass=resultPass,resultNoPass=resultNoPass,resultPending=resultPending,resultWait=resultWait,resultSum=resultSum,passRate=passRate,myechart=bar.render_embed(),host=REMOTE_HOST,script_list=bar.get_js_dependencies())
# else:
# return render_template("apinew/test_api_new_suite.html")
#
# # 查询执行全部用例
# @mod.route('/test_api_new_batch_al.json', methods=['POST', 'GET'])
# @user.authorize
# def search_api_batch_all():
# 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)
# batch_id = viewutil.getInfoAttribute(info, 'batch_id')
# result = viewutil.getInfoAttribute(info, 'result')
# type = viewutil.getInfoAttribute(info, 'type')
#
# conditionList = ['batch_id','result','type']
# valueList = [batch_id,result,type]
# fieldlist = []
# rows = 1000
# caseList = test_api_suit_manage.test_api_suit_manage().show_api_runhistory_all(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'}
#
# # 查询已关联url
# @mod.route('/test_api_new_has_suit.json', methods=['POST', 'GET'])
# @user.authorize
# def test_api_has_suit():
# 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 limit %s' %limit)
# log.log().logger.info('get offset %s' %offset)
# id = viewutil.getInfoAttribute(info, 'id')
# batch_id = viewutil.getInfoAttribute(info, 'batch_id')
# name = viewutil.getInfoAttribute(info, 'name')
# log.log().logger.info('name %s' %name)
# conditionList = ['id', 'name']
# valueList = [id, name]
# fieldlist = []
# rows = 1000
# caseList = test_api_suit_manage.test_api_suit_manage().show_test_api_has_suit(conditionList, valueList, fieldlist, rows, batch_id)
# 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_api_new_runhistory', methods=['POST', 'GET'])
# @user.authorize
# def test_api_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)
# url_id = viewutil.getInfoAttribute(info, 'url_id')
# batch_id = viewutil.getInfoAttribute(info, 'batch_id')
# source = viewutil.getInfoAttribute(info, 'source')
# if source =='':
# source = 'batch'
# import pyecharts
# REMOTE_HOST = "https://pyecharts.github.io/assets/js"
# bar = pyecharts.Pie()
# bar.width = 700
# bar.height = 400
# log.log().logger.info('url_id : %s' %url_id)
# log.log().logger.info('batch_id : %s' %batch_id)
# conditionList = ['batch_id', 'url_id']
# valueList = [batch_id, url_id]
# fieldlist = []
# caseList = test_api_suit_manage.test_api_suit_manage().show_batch_url(conditionList, valueList, fieldlist)
# batch_url_id=caseList[0]["batch_url_id"]
# log.log().logger.info('batch_url_id : %s' %batch_url_id)
# # #通过率
# resultWait=0
# resultNoPass=0
# resultPass=0
# resultPending =0
# result = test_api_suit_manage.test_api_suit_manage().show_batch_cases_result_group(batch_url_id=batch_url_id)
# log.log().logger.info('result is : %s' %result)
# for i in range(len(result)):
# if result[i]['result']==0:
# resultWait = int(result[i]['count'])
# elif result[i]['result']==1:
# resultPass = int(result[i]['count'])
# elif result[i]['result']==2:
# resultNoPass = int(result[i]['count'])
# elif result[i]['result']==3:
# resultPending = int(result[i]['count'])
# log.log().logger.info('%s, %s ,%s ,%s ' %(resultWait,resultNoPass,resultPass,resultPending))
# resultSum = resultWait+resultNoPass+resultPass+resultPending
# if resultSum!=0:
# passRate=str(round(resultPass/resultSum*100,2))+'%'
# else:
# passRate=0
# log.log().logger.info('passRate : %s' %passRate)
# bar.add("results", ['失败', '待执行', '执行完成', '成功'], [resultNoPass, resultWait, resultPending, resultPass],
# is_more_utils=True, is_area_show=True, is_label_show=True, legend_pos="50%")
# return render_template("apinew/test_api_new_runhistory.html", source = source, batch_id=batch_id,url_id=url_id,batch_url_id=batch_url_id,resultPass=resultPass,resultNoPass=resultNoPass,resultPending=resultPending,resultWait=resultWait,resultSum=resultSum,passRate=passRate,myechart=bar.render_embed(),host=REMOTE_HOST,script_list=bar.get_js_dependencies())
# else:
# return render_template("apinew/test_api_new_suite.html")
# #执行结果
# @mod.route('/test_api_new_runhistory.json', methods=['POST', 'GET'])
# @user.authorize
# def search_test_api_runhistory():
# 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)
# rows = 1000
# log.log().logger.info('get offset %s' %offset)
# id = viewutil.getInfoAttribute(info, 'id')
# batch_url_id = viewutil.getInfoAttribute(info, 'batch_url_id')
# type = viewutil.getInfoAttribute(info, 'type')
# result = viewutil.getInfoAttribute(info, 'result')
# conditionList = ['batch_url_id','result','type','id']
# valueList = [batch_url_id,result,type,id]
# fieldlist = []
# caseList = test_api_suit_manage.test_api_suit_manage().show_api_runhistory(conditionList, valueList, fieldlist, rows)
# log.log().logger.info('caselist: %s' %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'}
#
# #根据batch_url_id 查询结果
# @mod.route('/test_api_new_batch_url.json', methods=['POST', 'GET'])
# @user.authorize
# def search_test_api_batch_url():
# 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 limit %s' %limit)
# log.log().logger.info('get offset %s' %offset)
# batch_id = viewutil.getInfoAttribute(info, 'batch_id')
# url_id = viewutil.getInfoAttribute(info, 'url_id')
# conditionList = ['batch_id', 'url_id']
# valueList = [batch_id, url_id]
# fieldlist = []
# caseList = test_api_suit_manage.test_api_suit_manage().show_batch_url(conditionList, valueList, fieldlist)
# log.log().logger.info('caselist: %s' %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_api_new_batch_case_detail')
# @user.authorize
# def test_api_batch_case_detail():
# info = request.values
# log.log().logger.info('info : %s' %info)
# id = viewutil.getInfoAttribute(info, 'id')
# batch_id = viewutil.getInfoAttribute(info, 'batch_id')
# url_id = viewutil.getInfoAttribute(info, 'url_id')
# log.log().logger.info('batch_id : %s' %batch_id)
# log.log().logger.info('url_id : %s' %url_id)
# return render_template("apinew/test_api_new_batch_case_detail.html",id=id,batch_id=batch_id,url_id=url_id)
#
# #测试用例详情
# @mod.route('/test_api_new_case_run')
# @user.authorize
# def test_api_case_run():
# info = request.values
# log.log().logger.info('info : %s' %info)
# id = viewutil.getInfoAttribute(info, 'id')
# batch_id = viewutil.getInfoAttribute(info, 'batch_id')
# url_id = viewutil.getInfoAttribute(info, 'url_id')
# log.log().logger.info('batch_id : %s' %batch_id)
# log.log().logger.info('url_id : %s' %url_id)
# return render_template("apinew/test_api_new_case_run.html",id=id,batch_id=batch_id,url_id=url_id)
#
# #直接测试某个url
# @mod.route('/runurltest.json', methods=['POST', 'GET'])
# @user.authorize
# def runurltest():
# 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)
# info = request.values
# id = viewutil.getInfoAttribute(info, 'id')
# apiUrl=viewutil.getInfoAttribute(info, 'apiUrl')
# from app.apinew import run_case
# test_case_id,run_result = run_case.test_url_from_admin(id, apiUrl)
# if run_result=='1':
# result = jsonify({'code': 200,'test_case_id':test_case_id, 'msg': 'success!'})
# else:
# result = jsonify({'code': 500, 'msg': 'type is not defined!'})
# return result
#
#
# #手工测试某个url
# @mod.route('/test_api_new_single_test1.json', methods=['POST', 'GET'])
# @user.authorize
# def test_api_single_test1():
# 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)
# info = request.values
# url = viewutil.getInfoAttribute(info, 'url')
# from app.apinew import util
# response, content = util.util().send(url)
# log.log().logger.info(response)
# log.log().logger.info(content)
# result = jsonify({'code': 200, 'rows':[{'response':str(response), 'content': content}]})
# return result
#
# @mod.route('/runapinew.json', methods=['POST', 'GET'])
# @user.authorize
# def runapinew():
# 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')
# type = viewutil.getInfoAttribute(info, 'type')
# runtype = viewutil.getInfoAttribute(info, 'runtype')
# if runtype == 'part':
# runtype = '1'
# else:
# runtype = '0'
# if type == 'test_batch':
# test_api_suit_manage.test_api_suit_manage().update_api_test_batch_url([], id, runtype)
# result = jsonify({'code': 200, 'msg': 'success!'})
# elif type == 'test_case':
# # test_api_suit_manage.test_api_suit_manage().update_api_test_batch_url([],id,runtype)
# from app.apinew import run_case
# run_case.run_single_test(id)
# result = jsonify({'code': 200, 'msg': 'success!'})
# else:
# result = jsonify({'code': 500, 'msg': 'type is not defined!'})
# return result
#
#
#
# #刷新前置数据
# @mod.route('/test_api_new_refresh_prepose.json', methods=['POST', 'GET'])
# @user.authorize
# def test_api_refresh_prepose():
# 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)
# info = request.values
# url_id = viewutil.getInfoAttribute(info, 'url_id')
# batch_id = viewutil.getInfoAttribute(info, 'batch_id')
# apiUrl=viewutil.getInfoAttribute(info, 'url')
# # id = viewutil.getInfoAttribute(info, 'id')
# from app.apinew import run_case
# api_prepose.update_prepose(batch_id=batch_id, current_id=url_id, url=apiUrl)
# run_case.test_url_from_admin(url_id, apiUrl)
# result = jsonify({'code': 200})
# return result