Commit 04fae16d authored by Wallen姚文辉's avatar Wallen姚文辉

修复一些问题

parent 4b5713de
......@@ -196,69 +196,6 @@ def defaultCClist():
db.session.close()
return jsonify({"code": 200, "message": "请求成功","data": sqlOrmToJson(data)}),200
@tool.route('/testcase/uploadcase', methods=["POST"])
def uplooadcase():
data_=request.json
headers=getheader(session.get("id"))
id_=requests.request("get",jiraAddress+"/rest/agile/1.0/board?projectKeyOrId="+data_.get("project"),headers=headers).json().get("values")[0].get("id")
result=requests.request("get",jiraAddress+"/rest/greenhopper/1.0/xboard/plan/backlog/data.json?rapidViewId="+str(id_),headers=headers).json()
projectId,projectkey=result["projects"][0]["id"],result["projects"][0]["key"]
data={ "fields": {
"project": {
"key": projectkey
},
"summary": "测试占位",
"description": "文辉的测试",
"issuetype": {
"name": "测试用例"
},
}
}
result=requests.request("post",jiraAddress+"/rest/api/2/issue/",json=data,headers=headers).json()
globalcaseId=result["id"]
file_path=par_path+'/uploadfile/'+data_.get("file_name")
content= xmindparser.xmind_to_dict(file_path)
def a(suiteName,suiteId,info,new,type):
for each in info:
oldinfo,newtype=deepcopy(new),type
if not ((each["title"])=="Map" or (each["title"])=="测试用例" or (each["title"])=="sheet" or (each["title"])=="思维导图" or (each["title"])=="逻辑图" or (each["title"])=="括号图" or "画布" in (each["title"])):
if not suiteName:
suiteName = each.get("title")
params={"tcIssueId":globalcaseId,"projectId":projectId,"sourcePage":"TEST_SUITE_TEST_CASE_PAGE","decorator":"dialog","inline":True}
requests.request("post",jiraAddress+"/secure/CreateTestSuite.jspa?projectId="+str(projectId),data={"inline":True,"decorator":"dialog","testSuiteName":suiteName},headers=headers)
text=requests.request("get",jiraAddress+"/secure/ShowLinkTestSuiteInPanel.jspa",params=params,headers=headers).content
soup=BeautifulSoup(text,"html.parser")
suiteId=soup.find("strong",string=suiteName).parent.find("input").attrs.get("value")
if type=="name":
string=each.get("title")
if "tc:" in each.get("title") or "tc:" in each.get("title") or "tc:" in each.get("title"):
string,newtype=each.get("title").replace("tc:","").replace("tc:","").replace("tc:",""),"step"
oldinfo["name"]=oldinfo.get("name") and oldinfo.get("name")+"->"+string or string
elif type=="step":
newtype,oldinfo["step"]="expect",each.get("title")
else:
oldinfo["expect"]=each.get("title")
if each.get("topic") or each.get("topics"):
each.get("topic") and a(suiteName,suiteId,[each.get("topic")],oldinfo,newtype)
each.get("topics") and a(suiteName,suiteId,each.get("topics"),oldinfo,newtype)
else:
testId=requests.request("post",jiraAddress+"/rest/api/2/issue/",json={ "fields": {
"project": {
"key": projectkey
},
"summary": oldinfo["name"],
"issuetype": {
"name": "测试用例"
},
}
},headers=headers).json()["id"]
requests.request("post",jiraAddress+"/rest/synapse/1.0/testStep/addTestStep",json={"tcId":testId,"step":oldinfo.get("step"),"expectedResult":oldinfo.get("expect"),"sequenceNumber":None},headers=headers)
requests.request("post",jiraAddress+"/rest/synapse/latest/testSuite/addTestCaseMemberToTestSuites",json={"testSuiteIds":[suiteId],"testCaseId":testId},headers=headers)
a(None,None,content,{},"name")
requests.request("delete",jiraAddress+"/rest/api/2/issue/"+globalcaseId,headers=headers)
os.remove(file_path)
return jsonify({"code": 200, "message": "用例创建成功"}),200
@tool.route('/testcase/uploadhistory', methods=["GET"])
def uploadhistory():
......@@ -297,13 +234,8 @@ def run():
upid=a.id
db.session.commit()
db.session.close()
# h=Thread(target=runstart,args=(current_app._get_current_object(),file_name,request.form.get("project"),upid,session.get("id")))
# h.start()
# server.socketio.start_background_task(runstart,current_app._get_current_object(),file_name,request.form.get("project"),upid,session.get("id"))
# server.socketio.emit("www",room=)
from controller.socketevent import target
print(target)
emit("www",to=target,namespace='/')
server.socketio.start_background_task(runstart,current_app._get_current_object(),file_name,request.form.get("project"),upid,session.get("id"))
server.socketio.emit("infoupdate",room=upid)
return jsonify({"code": 200, "message": "上传成功"}),200
def runstart(app,file_name,project,upid,user_id):
......@@ -323,10 +255,10 @@ def runstart(app,file_name,project,upid,user_id):
},
}
}
case_count=[0]
result=requests.request("post",jiraAddress+"/rest/api/2/issue/",json=data,headers=headers).json()
globalcaseId=result["id"]
def up(suiteName,suiteId,info,new,type):
sums=0
for each in info:
oldinfo,newtype=deepcopy(new),type
if not ((each["title"])=="Map" or (each["title"])=="测试用例" or (each["title"])=="sheet" or (each["title"])=="思维导图" or (each["title"])=="逻辑图" or (each["title"])=="括号图" or "画布" in (each["title"])):
......@@ -347,8 +279,8 @@ def runstart(app,file_name,project,upid,user_id):
else:
oldinfo["expect"]=each.get("title")
if each.get("topic") or each.get("topics"):
each.get("topic") and up(suiteName,suiteId,[each.get("topic")],oldinfo,newtype)
each.get("topics") and up(suiteName,suiteId,each.get("topics"),oldinfo,newtype)
sums= sums+ (each.get("topic") and up(suiteName,suiteId,[each.get("topic")],oldinfo,newtype) or 0)
sums = sums + (each.get("topics") and up(suiteName,suiteId,each.get("topics"),oldinfo,newtype) or 0)
else:
testId=requests.request("post",jiraAddress+"/rest/api/2/issue/",json={ "fields": {
"project": {
......@@ -362,7 +294,8 @@ def runstart(app,file_name,project,upid,user_id):
},headers=headers).json()["id"]
requests.request("post",jiraAddress+"/rest/synapse/1.0/testStep/addTestStep",json={"tcId":testId,"step":oldinfo.get("step"),"expectedResult":oldinfo.get("expect"),"sequenceNumber":None},headers=headers)
requests.request("post",jiraAddress+"/rest/synapse/latest/testSuite/addTestCaseMemberToTestSuites",json={"testSuiteIds":[suiteId],"testCaseId":testId},headers=headers)
case_count[0]=+case_count[0]
return 1
return sums
def relevancycase(pro):
id_=requests.request("get",jiraAddress+"/rest/agile/1.0/board?projectKeyOrId="+pro,headers=headers).json().get("values")[0].get("id")
......@@ -386,134 +319,37 @@ def runstart(app,file_name,project,upid,user_id):
db.session.commit()
server.socketio.emit("infoupdate",room=a.id)
content= xmindparser.xmind_to_dict(par_path+"/uploadfile/"+file_name)
# try:
up(None,None,content,{},"name")
requests.request("delete",jiraAddress+"/rest/api/2/issue/"+globalcaseId,headers=headers)
a.step=2
a.stepstatus=0
a.case_count=case_count[0]
db.session.commit()
server.socketio.send("infoupdate",room=a.id)
# except:
# a.stepstatus=1
# a.status=1
# a.case_count=case_count
# db.session.commit()
# server.socketio.emit("infoupdate",room=a.id)
# db.session.close()
# return
try:
sums=up(None,None,content,{},"name")
requests.request("delete",jiraAddress+"/rest/api/2/issue/"+globalcaseId,headers=headers)
a.step=2
a.stepstatus=0
a.case_count=sums
db.session.commit()
server.socketio.emit("infoupdate",room=a.id)
except:
a.stepstatus=1
a.status=1
a.case_count=sums
db.session.commit()
server.socketio.emit("infoupdate",room=a.id)
db.session.close()
return
try:
relevancycase(project)
a.step=3
a.stepstatus=2
a.status=1
db.session.commit()
server.socketio.send("infoupdate",room=a.id)
server.socketio.emit("infoupdate",room=a.id)
except:
a.stepstatus=1
a.status=1
db.session.commit()
server.socketio.send("infoupdate",room=a.id)
server.socketio.emit("infoupdate",room=a.id)
db.session.close()
import os
import requests
from urllib.parse import urlparse
def download_file(url):
response = requests.get(url, stream=True)
response.raise_for_status()
download_dir = './upload'
os.makedirs(download_dir, exist_ok=True)
file_name = os.path.basename(urlparse(url).path)
file_path = os.path.join(download_dir, file_name)
with open(file_path, 'wb') as file:
for chunk in response.iter_content(chunk_size=8192):
if chunk:
file.write(chunk)
return file_path
def uploadcase(project,file_path,headers):
id_=requests.request("get",jiraAddress+"/rest/agile/1.0/board?projectKeyOrId="+project,headers=headers).json().get("values")[0].get("id")
result=requests.request("get",jiraAddress+"/rest/greenhopper/1.0/xboard/plan/backlog/data.json?rapidViewId="+str(id_),headers=headers).json()
projectId,projectkey=result["projects"][0]["id"],result["projects"][0]["key"]
data={ "fields": {
"project": {
"key": projectkey
},
"summary": "测试占位",
"description": "文辉的测试",
"issuetype": {
"name": "测试用例"
},
}
}
result=requests.request("post",jiraAddress+"/rest/api/2/issue/",json=data,headers=headers).json()
globalcaseId=result["id"]
content= xmindparser.xmind_to_dict(file_path)
def a(suiteName,suiteId,info,new,type):
for each in info:
oldinfo,newtype=deepcopy(new),type
if not ((each["title"])=="Map" or (each["title"])=="测试用例" or (each["title"])=="sheet" or (each["title"])=="思维导图" or (each["title"])=="逻辑图" or (each["title"])=="括号图" or "画布" in (each["title"])):
if not suiteName:
suiteName = each.get("title")
params={"tcIssueId":globalcaseId,"projectId":projectId,"sourcePage":"TEST_SUITE_TEST_CASE_PAGE","decorator":"dialog","inline":True}
requests.request("post",jiraAddress+"/secure/CreateTestSuite.jspa?projectId="+str(projectId),data={"inline":True,"decorator":"dialog","testSuiteName":suiteName},headers=headers)
text=requests.request("get",jiraAddress+"/secure/ShowLinkTestSuiteInPanel.jspa",params=params,headers=headers).content
soup=BeautifulSoup(text,"html.parser")
suiteId=soup.find("strong",string=suiteName).parent.find("input").attrs.get("value")
if type=="name":
string=each.get("title")
if "tc:" in each.get("title") or "tc:" in each.get("title") or "tc:" in each.get("title"):
string,newtype=each.get("title").replace("tc:","").replace("tc:","").replace("tc:",""),"step"
oldinfo["name"]=oldinfo.get("name") and oldinfo.get("name")+"->"+string or string
elif type=="step":
newtype,oldinfo["step"]="expect",each.get("title")
else:
oldinfo["expect"]=each.get("title")
if each.get("topic") or each.get("topics"):
each.get("topic") and a(suiteName,suiteId,[each.get("topic")],oldinfo,newtype)
each.get("topics") and a(suiteName,suiteId,each.get("topics"),oldinfo,newtype)
else:
testId=requests.request("post",jiraAddress+"/rest/api/2/issue/",json={ "fields": {
"project": {
"key": projectkey
},
"summary": oldinfo["name"],
"issuetype": {
"name": "测试用例"
},
}
},headers=headers).json()["id"]
requests.request("post",jiraAddress+"/rest/synapse/1.0/testStep/addTestStep",json={"tcId":testId,"step":oldinfo.get("step"),"expectedResult":oldinfo.get("expect"),"sequenceNumber":None},headers=headers)
requests.request("post",jiraAddress+"/rest/synapse/latest/testSuite/addTestCaseMemberToTestSuites",json={"testSuiteIds":[suiteId],"testCaseId":testId},headers=headers)
a(None,None,content,{},"name")
requests.request("delete",jiraAddress+"/rest/api/2/issue/"+globalcaseId,headers=headers)
os.remove(file_path)
def relevancycase(project,headers):
id_=requests.request("get",jiraAddress+"/rest/agile/1.0/board?projectKeyOrId="+project,headers=headers).json().get("values")[0].get("id")
result=requests.request("get",jiraAddress+"/rest/greenhopper/1.0/xboard/plan/backlog/data.json?rapidViewId="+str(id_),headers=headers).json()
projectkey=result["projects"][0]["key"]
result=requests.request("get",jiraAddress+"/rest/greenhopper/1.0/xboard/plan/backlog/data.json?rapidViewId="+str(id_)+"&selectedProjectKey="+projectkey,headers=headers).json()
all,type_,storyids=result.get("issues"),{},{}
for k,v in result["entityData"]["types"].items():
type_[str(k)]=v["typeName"]
[storyids.update({i.get("key"):[]}) for i in list(filter(lambda x:type_[x["typeId"]]=="Story",all))]
for item in list(filter(lambda x:type_[x["typeId"]]=="测试用例",all)):
for each in storyids.keys():
each in item.get("summary") and storyids[each].append(item.get("key"))
for k,v in storyids.items():
requests.request("post",jiraAddress+"/rest/synapse/latest/requirementTestCase/addTestCase",headers=headers,json={"currentReqkey":k,"testCaseKeys":v,"history":"yes"})
def run(url,project):
headers={
"Authorization":"Basic "+base64.b64encode(("username:password").encode('utf-8')).decode(),
"accept":"application/json,text/javascript,*/*;q=0.01"
}
file_path=download_file(url)
from manager.serverCenter import server
from flask_socketio import join_room,leave_room
from flask import request
target=None
@server.socketio.on("connect")
def on_connect():
global target
target=request.sid
@server.socketio.on('join')
def on_join(data):
print("我加入了房间")
print(data)
join_room(data)
@server.socketio.on('leave')
def on_leave(data):
print("我离开了房间")
print(data)
leave_room(data)
......@@ -77,7 +77,7 @@ if __name__ == '__main__':
server.app.register_blueprint(notoken)
# server.app.run(host="0.0.0.0", port=8000, debug=True)
server.socketio.run(server.app, host="0.0.0.0", port=8000, debug=True)
server.socketio.run(server.app, host="0.0.0.0", port=8000, debug=True,allow_unsafe_werkzeug=True)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment