autotest_platform/app/db/test_case_manage.py

162 lines
7.4 KiB
Python

from app import useDB,log
import string
class test_case_manage:
def __init__(self):
self.status = 0
self.name = ''
def new_test_case(self,module,name,steps,description, isPublic):
sql = string.Template('insert into test_case (module,name,steps,description,isPublicFunction) values ("$module","$name","$steps","$description",$isPublic);')
sql = sql.substitute(name = name, module = module, steps = steps,description=description, isPublic=isPublic)
useDB.useDB().insert(sql)
def copy_test_case(self,id):
# module, name, steps, description, isPublic
result = self.show_test_cases(['id'],[id],[],1)
if len(result):
result=result[0]
sql = string.Template('insert into test_case (module,name,steps,description,isPublicFunction) values ("$module","$name","$steps","$description",$isPublic);')
sql = sql.substitute(name = result['name'], module = result['module'], steps = result['steps'],description=result['description'], isPublic=result['isPublic'])
useDB.useDB().insert(sql)
result = 1
else:
result = 0
return result
def update_test_case(self,id,fieldlist,valueList):
update_value = '%s = "%s"' %(fieldlist[0],valueList[0])
for i in range(1,len(fieldlist)):
update_value += ', %s = "%s"' %(fieldlist[i],valueList[i])
sql = string.Template('update test_case set $field where id = "$id";')
sql = sql.substitute(field = update_value, id = id)
useDB.useDB().insert(sql)
def search_test_case(self,idList,fieldlist):
id_value = str(idList[0])
for i in range(1,len(idList)):
id_value += ','+str(idList[i])
search_value = fieldlist[0]
for i in range(1,len(fieldlist)):
search_value = search_value + ','+fieldlist[i]
sql = 'select ' + search_value + ' from test_case where id in ( ' + str(id_value) + ') order by id desc;'
resultlist = useDB.useDB().search(sql)
return resultlist
def show_test_cases(self,conditionList, valueList, fieldlist,rows):
if len(fieldlist)==0:
fieldlist = ['id', 'module', 'name', 'steps', 'description','isPublicFunction']
search_value = fieldlist[0]
for i in range(1,len(fieldlist)):
search_value = search_value + ','+fieldlist[i]
condition = ''
for i in range(len(conditionList)):
if i == 0:
if conditionList[i] == 'module':
log.log().logger.info(valueList[i])
moduleList = ''
for j in range(len(valueList[i])):
if j:
moduleList += ','
moduleList += '"' + valueList[i][j] + '"'
condition += str(conditionList[i]) + ' in (' + str(moduleList) + ')'
else:
condition += str(conditionList[i]) + ' like "%' + str(valueList[i]) + '%"'
else:
if conditionList[i] == 'module':
log.log().logger.info(valueList[i])
moduleList = ''
for j in range(len(valueList[i])):
if j:
moduleList += ','
moduleList += '"' + valueList[i][j] + '"'
condition += ' and ' + str(conditionList[i]) + ' in (' + str(moduleList) + ')'
else:
condition += ' and ' + str(conditionList[i]) + ' like "%' + str(valueList[i]) + '%"'
# if condition != '':
# condition += ' and '
results = []
sql = 'select ' + search_value + ' from test_case where ' + str(condition) + ' and status = 1 order by id desc limit '+ str(rows)+';'
cases = useDB.useDB().search(sql)
log.log().logger.info('cases : %s'%cases)
for i in range(len(cases)):
result = {}
result['id'] = cases[i][0]
result['module'] = cases[i][1]
result['name'] = cases[i][2]
result['steps'] = cases[i][3]
result['description'] = cases[i][4]
result['isPublic'] = cases[i][5]
results.append(result)
return results
def show_test_cases_unattach(self,test_suite_id,conditionList, valueList, fieldlist,rows):
fieldlist = ['id', 'module', 'name', 'steps', 'description','isPublicFunction']
search_value = fieldlist[0]
for i in range(1,len(fieldlist)):
search_value = search_value + ','+fieldlist[i]
results = []
log.log().logger.info('%s, %s, %s, %s, %s' %(test_suite_id,conditionList, valueList, fieldlist,rows))
condition = ''
for i in range(len(conditionList)):
if i == 0:
if conditionList[i]=='module':
log.log().logger.info(valueList[i])
moduleList = ''
for j in range(len(valueList[i])):
if j :
moduleList += ','
moduleList += '"'+valueList[i][j]+'"'
condition += str(conditionList[i]) + ' in (' + str(moduleList) + ')'
else:
condition += str(conditionList[i]) +' like "%'+str(valueList[i])+'%"'
else:
if conditionList[i] == 'module':
log.log().logger.info(valueList[i])
moduleList = ''
for j in range(len(valueList[i])):
if j :
moduleList += ','
moduleList += '"'+valueList[i][j]+'"'
condition += ' and ' + str(conditionList[i]) + ' in (' + str(moduleList) + ')'
else:
condition += ' and '+str(conditionList[i]) +' like "%'+str(valueList[i])+'%"'
if condition !='':
condition += ' and '
sql = 'select ' + search_value + ' from test_case where status = 1 and isPublicFunction=0 and '+ str(condition) +' id not in (select distinct test_case_id from test_batch where test_suite_id = '+test_suite_id+' ) order by module desc;'
cases = useDB.useDB().search(sql)
log.log().logger.info('cases : %s'%cases)
for i in range(len(cases)):
result = {}
result['id'] = cases[i][0]
result['module'] = cases[i][1]
result['name'] = cases[i][2]
result['steps'] = cases[i][3]
result['description'] = cases[i][4]
result['isPublic'] = cases[i][5]
results.append(result)
return results
#
# def show_test_keywords(self,conditionList, valueList, fieldlist,rows):
# results = []
# sql = 'select id, keyword, paraCount, template, example,description from test_keyword where keyword like "%' + str(valueList[0]) + '%" order by id desc limit '+ str(rows)+';'
# cases = useDB.useDB().search(sql)
# log.log().logger.info('cases : %s'%cases)
# for i in range(len(cases)):
# result = {}
# result['id'] = cases[i][0]
# result['keyword'] = cases[i][1]
# result['paraCount'] = cases[i][2]
# result['template'] = cases[i][3]
# result['example'] = cases[i][4]
# result['description'] = cases[i][5]
# results.append(result)
# return results