Commit 035f4203 authored by Wallen姚文辉's avatar Wallen姚文辉

修复bug

parent 1ecd1c2b
File added
from flask import Blueprint, request, jsonify,session
from manager.serverCenter import server,emailserver
from manager.serverCenter import server
from model.Model import User,Emails
import base64
import requests
......@@ -22,14 +22,6 @@ def getheader(id_):
}
return headers
# def sendEmail(to,subject,contents=None,attachments=None):
# '''
# to 发送目标,数组时为多人
# subject 主题
# contents 内容
# attachments 附件,数组时为多个
# '''
# emailserver.server.send(to=to,subject=subject,contents=contents,attachments=attachments)
@tool.route('/testport/sendport', methods=["POST"])
def sendport():
......@@ -38,8 +30,6 @@ def sendport():
user = 'wallen.ywh@galaxyoversea.com'
password = 'Ywh940509'
yag = yagmail.SMTP( user=user, password=password, host='smtp.exmail.qq.com',port=465)
print(emailserver.server.__dict__)
# emailserver.server.send(data["to"],data.get("subject"),data.get("contents"))
yag.send(data["to"],data.get("subject"),data.get("contents"))
return jsonify({"code": 200, "message": "请求成功"}),200
......@@ -110,8 +100,12 @@ def reportinfo():
for i in story:
i["case"]=[]
i["childrenTask"]=[i.get("key")]
chan=i["extraFields"][0]["html"]
if chan not in peoples["chan"]:
chan=''
for m in i["extraFields"]:
if m.get("id")=="reporter":
chan=m.get("html")
break
if chan and chan not in peoples["chan"]:
peoples["chan"].append(chan)
i["peoples"]=[chan]
info=requests.request("get",jiraAddress+"/rest/greenhopper/1.0/xboard/issue/details.json?rapidViewId="+str(id_)+"&issueIdOrKey="+i["key"]+"&loadSubtasks=true",headers=headers).json()
......@@ -125,12 +119,12 @@ def reportinfo():
i["peoples"].append(k)
if (k and ( k in peoples["test"] or k in peoples["qian"] or k in peoples["hou"])) or not k:
continue
elif ("测试" in m.get("summary") or "用例" in m.get("summary")):
peoples["test"].append(k)
elif "前端" in m.get("summary"):
elif "【前端】" in m.get("summary"):
peoples["qian"].append(k)
elif "后端" in m.get("summary"):
elif "【后端】" in m.get("summary"):
peoples["hou"].append(k)
elif ("测试" in m.get("summary") or "用例" in m.get("summary")):
peoples["test"].append(k)
i["childrenTask"].append(m.get("key"))
elif j.get("tabId")=="THIRD_PARTY_TAB":
for each in j.get("sections"):
......
from flask import Flask, request, jsonify, session, current_app
from flask import Flask
import os
from flask_sqlalchemy import SQLAlchemy
from datetime import timedelta
from datetime import datetime, date
from manager.tools import get_config
import yagmail
config=get_config()
mysqlConf=config["mysql"]
eamilConf=config["email"]
# redisConf=config["redis"]
# emailConf=config["email"]
# class CustomJSONEncoder(JSONEncoder):
# def default(self, obj):
# if isinstance(obj, datetime):
# return obj.strftime('%Y-%m-%d %H:%M:%S')
# elif isinstance(obj, date):
# return obj.strftime('%Y-%m-%d')
# else:
# return JSONEncoder.default(self, obj)
class server():
app = Flask(__name__, template_folder='auto_test/html', static_folder='')
app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{mysqlConf['user']}:{mysqlConf['password']}@{mysqlConf['host']}:{mysqlConf['port']}/{mysqlConf['db']}?charset=utf8mb4"
......@@ -30,19 +15,10 @@ class server():
app.config['SECRET_KEY'] = os.urandom(24)
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)
app.secret_key = "test"
# app.json_encoder = CustomJSONEncoder
db = SQLAlchemy(app)
class emailserver():
server=yagmail.SMTP(user=eamilConf["user"], password=eamilConf["password"], host=eamilConf["host"],port=eamilConf["port"])
# def send(self,to,subject,contents=None,attachments=None):
# '''
# to 发送目标,数组时为多人
# contents 内容
# attachments 附件,数组时为多个
# '''
# emailserver.server.send()
用例名,用例步骤,预期结果
小程序优化点->小程序-取消抢号:STARCOM-1016->功能逻辑-取消抢号按钮显示,验证在抢号状态为【抢号中、抢号成功】时,批次右侧是否正确显示“取消抢号”按钮。,
小程序优化点->小程序-取消抢号:STARCOM-1016->功能逻辑-取消抢号二次确认弹窗,验证点击“取消抢号”按钮后,是否弹出【取消抢号】二次确认弹窗。,
小程序优化点->小程序-取消抢号:STARCOM-1016->功能逻辑-不取消操作,验证在二次确认弹窗点击不取消后,弹窗是否关闭且数据未被修改。,
小程序优化点->小程序-取消抢号:STARCOM-1016->功能逻辑-确认取消操作抢号中,验证在抢号状态为【抢号中】时,确认取消后页面状态是否变成【取消成功,可以重新预约】。,
小程序优化点->小程序-取消抢号:STARCOM-1016->功能逻辑-确认取消操作抢号成功,验证在抢号状态为【抢号成功】时,确认取消后是否调用【RPA-取消抢号】服务。,
小程序优化点->小程序-取消抢号:STARCOM-1016->功能逻辑-确认取消操作抢号成功,【RPA-取消抢号】服务并根据返回结果等待中,
小程序优化点->小程序-取消抢号:STARCOM-1016->功能逻辑-确认取消操作抢号成功,【RPA-取消抢号】服务并根据返回结果成功,
小程序优化点->小程序-取消抢号:STARCOM-1016->功能逻辑-确认取消操作抢号成功,【RPA-取消抢号】服务并根据返回结果失败,
小程序优化点->小程序-取消抢号:STARCOM-1016->功能逻辑-确认取消操作抢号成功,【RPA-取消抢号】服务并根据返回结果异常,提示“取消失败,请稍后重试或反馈客服”。,
小程序优化点->小程序-文案调整:STARCOM-1022->页面样式-文案显示,"颜色修改:【12个月左右】:蓝色字;
【我们将实时为您查询身份申请进度】:蓝色字;",
小程序优化点->小程序-文案调整:STARCOM-1022->页面样式-文案显示,文案调整:12个月内->12个月左右,
DWP-取消抢号:STARCOM-1017->DWP-取消抢号逻辑->功能逻辑-抢号中状态取消,验证在抢号中状态下,点击取消抢号后,人员抢号状态是否变成【待提交】。,
DWP-取消抢号:STARCOM-1017->DWP-取消抢号逻辑->功能逻辑-抢号成功状态取消,验证在抢号成功状态下,点击取消抢号后,是否正确调用【RPA-取消抢号】服务并根据返回结果展示不同状态。,
DWP-取消抢号:STARCOM-1017->DWP-取消抢号逻辑->异常场景-取消抢号按钮置灰不可点击,验证在等待处理结果状态下,取消抢号按钮是否置灰且不可点击。,
DWP-取消抢号:STARCOM-1017->DWP-取消抢号逻辑->异常场景-取消抢号失败错误提示,验证在处理失败状态下,是否显示错误提示“取消失败,请稍后重试或反馈技术人员”。,
关联影响:STARCOM-1018->同步抢号信息至CRM->功能逻辑-抢号成功信息同步,验证抢号成功后,是否正确同步抢号信息至【CRM-预约办理身份证时间】,包括出生日期和预约时间。,
关联影响:STARCOM-1018->同步抢号信息至CRM->功能逻辑-取消抢号成功信息移除,验证取消抢号成功后,是否正确移除【CRM-预约办理身份证时间】信息,包括将出生日期和预约时间置为空。,
关联影响:STARCOM-1018->消息通知->功能逻辑-提交抢号消息通知,验证客户在小程序提交抢号后,客户经理是否收到正确格式的通知消息。,
关联影响:STARCOM-1018->消息通知->功能逻辑-取消抢号消息通知,验证客户在小程序取消抢号后,客户经理是否收到正确格式的通知消息。,
V1.07 技术需求-续签进度管理:STARCOM-1040->更多筛选优化->正常功能测试->功能逻辑-点击“更多筛选”按钮弹出筛选弹窗,验证点击“更多筛选”按钮后,是否正确弹出筛选弹窗。,
V1.07 技术需求-续签进度管理:STARCOM-1040->更多筛选优化->正常功能测试->功能逻辑-在筛选弹窗中进行“查询”操作,验证在筛选弹窗中输入条件后点击“查询”,是否能根据输入的条件返回正确的筛选结果。,
V1.07 技术需求-续签进度管理:STARCOM-1040->更多筛选优化->正常功能测试->功能逻辑-在筛选弹窗中进行“重置”操作,验证在筛选弹窗中点击“重置”后,所有筛选条件是否被清空。,
V1.07 技术需求-续签进度管理:STARCOM-1040->更多筛选优化->正常功能测试->功能逻辑-清除单个选项的数据对列表上方tag标签的影响,验证在筛选弹窗中清除单个选项的数据后,对应的列表上方的tag标签是否被移除。,
V1.07 技术需求-续签进度管理:STARCOM-1040->更多筛选优化->正常功能测试->功能逻辑-列表上方的tag标签点击移除操作,验证列表上方的tag标签点击移除后,是否正确从筛选条件中移除该标签对应的条件。,
V1.07 技术需求-续签进度管理:STARCOM-1040->更多筛选优化->正常功能测试->功能逻辑-列表上方的“重置”操作,验证点击列表上方的“重置”按钮后,所有筛选条件是否被清空,且列表恢复到未筛选状态。,
V1.07 技术需求-续签进度管理:STARCOM-1040->更多筛选优化->正常功能测试->功能逻辑-更多筛选条件全部选择后的请求参数,验证在更多筛选中全部选择条件后,发出的请求参数是否与测试环境一致。,
V1.07 技术需求-续签进度管理:STARCOM-1040->更多筛选优化->正常功能测试->功能逻辑-数据概览跳转后筛选条件的展示,验证从数据概览跳转到续签进度管理页面后,筛选条件是否正确展示,且与“更多筛选”中的展示一致。,
V1.07 技术需求-续签进度管理:STARCOM-1040->更多筛选优化->边界值测试->边界值-筛选条件的最大和最小值输入,验证筛选条件中涉及数值输入的字段,输入最大值和最小值时系统的响应是否正确。,
V1.07 技术需求-续签进度管理:STARCOM-1040->更多筛选优化->异常场景测试->异常场景-筛选条件不满足要求时的提示,验证当筛选条件不满足要求(如格式错误、超出范围)时,系统是否给出正确的提示信息。,
V1.07 技术需求-续签进度管理:STARCOM-1040->更多筛选优化->异常场景测试->异常场景-网络异常时筛选操作的处理,验证在网络异常的情况下进行筛选操作时,系统是否给出网络异常的提示,并处理异常情况。,
V1.07 技术需求-续签进度管理:STARCOM-1040->更多筛选优化->页面样式测试->页面样式-筛选弹窗的UI展示,验证筛选弹窗的UI是否与设计稿一致,包括按钮、输入框、标签等元素的样式和布局。,
V1.07 技术需求-续签进度管理:STARCOM-1040->更多筛选优化->页面样式测试->页面样式-列表上方tag标签的样式,验证列表上方的tag标签样式是否符合设计要求,包括颜色、字体、大小等样式属性。,
电子签证查询优化->区分获批/续签阶段的签证查询项:STARCOM-1019->功能逻辑-区分获批和续签阶段的签证查询项,验证系统能够正确区分不包含“续签定期跟进、设置续签资料清单”的项目为【电子签证查询】,
电子签证查询优化->区分获批/续签阶段的签证查询项:STARCOM-1019->功能逻辑-区分获批和续签阶段的签证查询项,验证系统能够正确区分包含“续签定期跟进、设置续签资料清单”的项目为【续签签证查询】,
电子签证查询优化->订单覆盖范围扩大:STARCOM-1019->功能逻辑-订单覆盖范围扩大,非续期优才(6万),
电子签证查询优化->订单覆盖范围扩大:STARCOM-1019->功能逻辑-订单覆盖范围扩大,非续期优才(4万),
电子签证查询优化->订单覆盖范围扩大:STARCOM-1019->功能逻辑-订单覆盖范围扩大,非续期高才(6万),
电子签证查询优化->订单覆盖范围扩大:STARCOM-1019->功能逻辑-订单覆盖范围扩大,非续期高才(4万),
电子签证查询优化->订单覆盖范围扩大:STARCOM-1019->功能逻辑-订单覆盖范围扩大,非续期专才(6万),
电子签证查询优化->订单覆盖范围扩大:STARCOM-1019->功能逻辑-订单覆盖范围扩大,非续期专才(4万),
电子签证查询优化->订单覆盖范围扩大:STARCOM-1019->功能逻辑-订单覆盖范围扩大,非续期面试到永居后续服务,
电子签证查询优化->订单覆盖范围扩大:STARCOM-1019->功能逻辑-订单覆盖范围扩大,续期优才(6万),
电子签证查询优化->订单覆盖范围扩大:STARCOM-1019->功能逻辑-订单覆盖范围扩大,续期高才(6万),
电子签证查询优化->订单覆盖范围扩大:STARCOM-1019->功能逻辑-订单覆盖范围扩大,续期专才(6万),
电子签证查询优化->订单覆盖范围扩大:STARCOM-1019->功能逻辑-订单覆盖范围扩大,续期面试到永居后续服务,
电子签证查询优化->订单覆盖范围扩大:STARCOM-1019->功能逻辑-订单覆盖范围扩大,续期续签到永居,
电子签证查询优化->订单覆盖范围扩大:STARCOM-1019->功能逻辑-订单覆盖范围扩大,续期续签服务【单次】,
电子签证查询优化->电子签证/续签签证文件自动同步回CRM系统::STARCOM-1021->功能逻辑-电子签证文件自动同步回CRM系统,验证电子签证文件上传后是否能自动同步回CRM系统并自动填充页面内容,
电子签证查询优化->电子签证/续签签证文件自动同步回CRM系统::STARCOM-1021->功能逻辑-续签签证文件自动同步回CRM系统,验证续签签证文件上传后是否能自动同步回CRM系统并自动填充页面内容,
电子签证查询优化->初始化列表数据:STARCOM-1019->功能逻辑-初始化列表数据,验证在满足查询条件时,系统是否能正确初始化列表数据并提交至影刀进行查询,
电子签证查询优化->删除条件:STARCOM-1019->功能逻辑-删除电子签证查询条件,验证系统是否能正确删除“电子签证查询”条件中的【存在已经原则获批的业务记录】,
电子签证查询优化->支持多进程同步查询:STARCOM-1020->功能逻辑-支持多进程同步查询,验证影刀是否能支持多开页面进行查询,类似“获批查询”,
电子签证查询优化->自动完结任务:STARCOM-1019->功能逻辑-自动完结电子签证查询任务,验证在满足【查询状态:处理中、未知+CRM“上传签证“已完成】时,查询状态是否会变更为“已完结”,
电子签证查询优化->自动完结任务:STARCOM-1019->功能逻辑-自动完结续签签证查询任务,验证在满足【查询状态:处理中、未知+CRM最新一次“上传续签签证“已完成】时,查询状态是否会变更为“已完结”,
电子签证查询优化->自动完结任务:STARCOM-1019->当订单状态为已完成时,获批查询不再查询,
电子签证查询优化->自动完结任务:STARCOM-1019->当订单状态为已完成时,电子签证查询不再查询,
电子签证查询优化->自动完结任务:STARCOM-1019->当订单状态为已完成时,续签获批不再查询,
电子签证查询优化->自动完结任务:STARCOM-1019->当订单状态为已完成时,续签电子签证不再查询,
电子签证查询优化->编辑签证/编辑续签签证优化:STARCOM-1021->功能逻辑-编辑续签签证优化,验证在【续签签证查询】时,操作列是否展示“编辑续签签证”,
电子签证查询优化->编辑签证/编辑续签签证优化:STARCOM-1021->功能逻辑-编辑续签签证优化,验证弹窗标题文案是否改为“编辑续签签证”,
电子签证查询优化->编辑签证/编辑续签签证优化:STARCOM-1021->功能逻辑-编辑续签签证优化,验证“签证时长”字段是否改为“逗留延长至”字段,并且是否能正确展示签证识别结果,
电子签证查询优化->编辑签证/编辑续签签证优化:STARCOM-1021->功能逻辑-编辑续签签证优化,是否能同步回crm,
电子签证查询优化->电子签证自动识别优化:STARCOM-995->功能逻辑-电子签证自动识别优化,验证电子签证PDF文件上传后,系统是否能根据“申请档案编号”识别签证类型并提取相关信息,
"电子签证查询优化->CRM-电子签证自动识别并填充:STARCOM-1021
->功能逻辑-CRM中电子签证自动识别并填充",验证在CRM手工上传电子签证或续签签证文件后,系统是否能自动识别并填充内容,
电子签证查询优化->入境处进度查询:不获批准通知:STARCOM-1039->功能逻辑-不获批准通知,验证在生成“不获批准”的数据时,系统是否能正确通知对应订单的客户经理,
电子签证查询优化->入境处进度查询:不获批准通知:STARCOM-1039->文案验证,文案:你的客户{*主申姓名},合同号{*合同号}不获批准,请及时跟进处理,
PRA-取消抢号-服务:STARCOM-1018->异常取消,取消抢号得任一信息错误,
PRA-取消抢号-服务:STARCOM-1018->正常取消,脚本正常执行,返回结果正常,
PRA-取消抢号-服务:STARCOM-1018->取消失败,无法遍历所有失败因素,需要线上观察优化脚本,
import base64
import requests
import pandas as pd
import xmindparser
from copy import deepcopy
xmindparser.config = {
'showTopicId': True, # 是否展示主题ID
'hideEmptyValue': True # 是否隐藏空值
}
def relational_case(project):
jiraAddress,user,password="http://jira.galaxy-immi.com","wallen.ywh","ywh940509"
headers={
"Authorization":"Basic "+base64.b64encode((user+":"+password).encode('utf-8')).decode(),
"accept":"application/json,text/javascript,*/*;q=0.01"
}
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_)+"&selectedProjectKey="+project,headers=headers).json()
all=result.get("issues")
type_={}
for k,v in result["entityData"]["types"].items():
type_[str(k)]=v["typeName"]
storyids={}
[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():
print(k,v)
res=requests.request("post",jiraAddress+"/rest/synapse/latest/requirementTestCase/addTestCase",headers=headers,json={"currentReqkey":k,"testCaseKeys":v,"history":"yes"})
print(res.status_code)
print(res.url)
print(res.headers)
# print(res.)
def makecase(filePath):
content = xmindparser.xmind_to_dict(filePath)
case_list=[]
# print(content)
def a(info,new,type):
for each in info:
oldinfo=deepcopy(new)
newtype=type
if not ((each["title"])=="Map" or (each["title"])=="测试用例"):
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=each.get("title").replace("tc:","").replace("tc:","").replace("tc:","")
newtype="step"
if oldinfo.get("name"):
oldinfo["name"]=oldinfo.get("name")+"->"+string
else:
oldinfo["name"]=string
elif type=="step":
newtype="expect"
oldinfo["step"]=each.get("title")
else:
oldinfo["expect"]=each.get("title")
if each.get("topic") or each.get("topics"):
(each.get("topic") and a([each.get("topic")],oldinfo,newtype))
(each.get("topics") and a(each.get("topics"),oldinfo,newtype))
else:
case_list.append(oldinfo)
a(content,{},"name")
# for each in case_list:
# print(each)
name=list(map(lambda x:x.get("name"),case_list))
step=list(map(lambda x:x.get("step"),case_list))
expect=list(map(lambda x:x.get("expect"),case_list))
dataframe = pd.DataFrame({"用例名":name,"用例步骤":step,"预期结果":expect})
dataframe.to_csv("test.csv",index=False,sep=',')
# makecase("/home/yaowenhui/galaxTestCenter/1.07.xmind")
relational_case("STARCOM")
\ No newline at end of file
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