Skip to content

Commit

Permalink
修复已知问题,增加演示demo
Browse files Browse the repository at this point in the history
  • Loading branch information
liwanlei committed May 9, 2021
1 parent 7f953a4 commit 60fee19
Show file tree
Hide file tree
Showing 43 changed files with 642 additions and 635 deletions.
Binary file modified __pycache__/config.cpython-37.pyc
Binary file not shown.
17 changes: 15 additions & 2 deletions app/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,13 @@
from flask_bootstrap import Bootstrap
from flask_login import LoginManager
from config import lod
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.schedulers.background import BackgroundScheduler,BlockingScheduler
from config import jobstores, executors
from flask_admin import Admin
from flask_moment import Moment
from flask_restplus import Api, reqparse

from apscheduler.events import EVENT_JOB_EXECUTED, EVENT_JOB_ERROR
pagination_arguments = reqparse.RequestParser()
pagination_arguments.add_argument('page', type=int, required=False, default=1, help='Page number')
api = Api(version='1.0', title='系统api',
Expand All @@ -31,6 +32,18 @@
loginManager.login_message = u'FXTest测试平台必须登录,请登录您的FXTest平台账号!'
db = SQLAlchemy(app)
moment = Moment(app)
sched = BackgroundScheduler(jobstores=jobstores, executors=executors)
admin = Admin(app, name=u'FXTest系统管理后台')
from app import views, models, url, apiadmin
def my_listerner(event):
if event.exception:
print('任务出错了!')
else:
print('任务正常运行中...')
sched = BackgroundScheduler(jobstores=jobstores, executors=executors)
sched.add_listener(my_listerner,EVENT_JOB_ERROR | EVENT_JOB_EXECUTED)

try:
sched.start()
except Exception as e:
print(e)

Binary file modified app/__pycache__/__init__.cpython-37.pyc
Binary file not shown.
Binary file modified app/__pycache__/models.cpython-37.pyc
Binary file not shown.
Binary file modified app/case/__pycache__/views.cpython-37.pyc
Binary file not shown.
58 changes: 36 additions & 22 deletions app/case/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,12 @@


def save_reslut(key, value):
m = ConRedisOper(host=redis_host, port=redis_port, db=redis_save_result_db)
m.sethase(key, value, save_duration)

redis = ConRedisOper(host=redis_host, port=redis_port, db=redis_save_result_db)
redis.sethase(str(key), str(value), save_duration)

def get_reslut(key):
m = ConRedisOper(host=redis_host, port=redis_port, db=redis_save_result_db)
reslit = m.getset(key)
redis= ConRedisOper(host=redis_host, port=redis_port, db=redis_save_result_db)
reslit = redis.getset(key)
return reslit


Expand Down Expand Up @@ -109,7 +108,7 @@ def dispatch_request(self):
inrterface_list=inrterface_list, mock_yilai=mock_yilai)
project_id = Project.query.filter_by(project_name=yongli_nam).first().id
models_id = Model.query.filter_by(model_name=mode).first().id
interface = Interface.query.filter_by(Interface_name=interface_name).first().id
interface = Interface.query.filter_by(Interface_name=interface_name).first()
if save == 1 or save == '1':
saves = False
elif save == 2 or save == '2':
Expand All @@ -120,14 +119,14 @@ def dispatch_request(self):
models=models, inrterface_list=inrterface_list)

try:
newcase = InterfaceTest(projects_id=project_id, model_id=models_id, interface_id=interface,
newcase = InterfaceTest(projects_id=project_id, model_id=models_id, interface_id=interface.id,
Interface_headers=interface_header, bian_num=interface_url,
Interface_meth=interface_meth, Interface_pase=interface_can,
Interface_assert=interface_re, Interface_user_id=current_user.id,
saveresult=saves, pid=(yilai_tes), getattr_p=yilai_dat,
is_database=is_database, chaxunshujuku=databasesql,
databaseziduan=databijiao,
Interface_name=interface_name, Interface_url=interface_url,
Interface_name=interface_name, Interface_url=interface.Interface_url,
interface_type=interface_type, is_ci=is_ci)
db.session.add(newcase)
db.session.commit()
Expand Down Expand Up @@ -503,7 +502,7 @@ def dispatch_request(self):
yilaidata=Interface_yilai_list, saveresult=Interface_save_list,
id_list=id_list, is_database=Interface_is_data_list,
data_mysql=Interface_mysql_list,
data_ziduan=Interface_msyql_ziduan_list, urltest=testevent)
data_ziduan=Interface_msyql_ziduan_list, urltest=testevent.url)
result_toal, result_pass, result_fail, relusts, bask_list, result_cashu, \
result_wei, result_except, spend_list = apitest.testapi()
large, minx, pinglun = listmax(list2=spend_list)
Expand Down Expand Up @@ -623,6 +622,7 @@ def post(self):
db.session.commit()
return jsonify({'code': 48, 'msg': '测试的请求头应该是字典格式的!'})
if case.is_database is True:

if case.chaxunshujuku is None or case.databaseziduan is None:
case.Interface_is_tiaoshi = True
case.Interface_tiaoshi_shifou = True
Expand Down Expand Up @@ -653,6 +653,8 @@ def post(self):
case.Interface_tiaoshi_shifou = True
db.session.commit()
return jsonify({'code': 54, 'msg': '测试环境数据库登录密码配置不存在'})
if case.databaseziduan =="" or case.chaxunshujuku=="":
return jsonify({'code': 55, 'msg': '依赖数据库必须有字段'})
conncts = cursemsql(host=testevent.dbhost, port=testevent.dbport,
user=testevent.databaseuser, password=testevent.databasepassword,
database=testevent.database)
Expand Down Expand Up @@ -684,7 +686,6 @@ def post(self):

result = response.getJson()


if result=="请求出错了":
# save_reslut(key=str(case.id) + "&" + str(url), value=str(result))
return jsonify({'code': 58, 'msg': '测试用例测试失败,请检查用例!'})
Expand All @@ -693,27 +694,40 @@ def post(self):
return_mysql = pare_result_mysql(mysqlresult=mysql_result,
return_result=result, paseziduan=case.databaseziduan)
retur_re = assert_in(case.Interface_assert, result)

try:
if retur_re == 'pass' and return_mysql['result'] == 'pass':
if case.is_database is True:
if retur_re == 'pass' and return_mysql['result'] == 'pass':
case.Interface_is_tiaoshi = True
case.Interface_tiaoshi_shifou = False
save_reslut(key=str(case.id) + "&" + url, value=str(result))
return jsonify({'code': 200, 'msg': '测试用例调试通过!'})
elif retur_re == 'fail' or return_mysql['result'] == 'fail':
case.Interface_is_tiaoshi = True
case.Interface_tiaoshi_shifou = True
save_reslut(key=str(case.id) + "&" + url, value=str(result))
return jsonify({'code': 58, 'msg': '测试用例测试失败,请检查用例!'})
else:
case.Interface_is_tiaoshi = True
case.Interface_tiaoshi_shifou = True
save_reslut(key=str(case.id)+ "&" + url, value=str(result))
return jsonify({'code': 59, 'msg': '测试返回异常,,请检查用例!'})

if retur_re == 'pass':
case.Interface_is_tiaoshi = True
case.Interface_tiaoshi_shifou = False
save_reslut(key=case.id + "&" + url, value=str(result))
save_reslut(key=str(case.id) + "&" + url, value=str(result))
return jsonify({'code': 200, 'msg': '测试用例调试通过!'})
elif retur_re == 'fail' or return_mysql['result'] == 'fail':
case.Interface_is_tiaoshi = True
case.Interface_tiaoshi_shifou = True
save_reslut(key=case.id + "&" + url, value=str(result))
return jsonify({'code': 58, 'msg': '测试用例测试失败,请检查用例!'})
else:
case.Interface_is_tiaoshi = True
case.Interface_tiaoshi_shifou = True
save_reslut(key=case.id + "&" + url, value=str(result))
return jsonify({'code': 59, 'msg': '测试返回异常,,请检查用例!'})
key=str(case.id) + "&" + url

save_reslut(key=key, value=str(result))
return jsonify({'code': 58, 'msg': '测试用例测试失败,请检查用例!'})
except Exception as e:
case.Interface_is_tiaoshi = True
case.Interface_tiaoshi_shifou = True
save_reslut(key=case.id + "&" + url, value=str(result))
save_reslut(key=str(case.id) + "&" + url, value=str(result))
return jsonify({'code': 60, 'msg': u'用例测试失败,失败原因:{},请检查测试用例'.format(e)})
# elif case.interface_type == 'dubbo':
# try:
Expand Down Expand Up @@ -767,7 +781,7 @@ def post(self):
else:
return jsonify({'code': 62, 'msg': '目前还不支持你所选择的类型的协议!'})
except Exception as e:
print(e)

case.Interface_is_tiaoshi = True
case.Interface_tiaoshi_shifou = True
db.session.commit()
Expand Down
Binary file modified app/home/__pycache__/views.cpython-37.pyc
Binary file not shown.
40 changes: 21 additions & 19 deletions app/home/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,11 +93,13 @@ def get(self):

def post(self):
data = request.get_json()
if data is None:
return jsonify({'msg': login_username_not_message, 'code': 33, 'data': ''})
ip = request.remote_addr
username = data['username']
password = data['password']
if username is None:
return jsonify({'msg': login_username_not_message, 'code': 33, 'data': ''})
return jsonify({'msg': login_username_not_message, 'code': 33, 'data': ''})
if password is None:
return jsonify({'msg': login_password_not_message, 'code': 34, 'data': ''})
user = User.query.filter_by(username=username).first()
Expand Down Expand Up @@ -498,14 +500,15 @@ def post(self):
data = request.get_json()
models = Model.query.filter_by(model_name=data['name']).first()
if data['project'] == '请选择':
common = True
# common = True
project_one = None
else:
project_one = Project.query.filter_by(project_name=data['project']).first().id
common = False
# common = False
if models:
return jsonify({'code': 1, 'data': u'模块不能重复存在'})
new_moel = Model(model_name=data['name'], model_user_id=current_user.id, common=common, project=project_one)

new_moel = Model(model_name=data['name'], model_user_id=current_user.id, project=project_one)
db.session.add(new_moel)
try:
db.session.commit()
Expand All @@ -523,18 +526,15 @@ def put(self):
projec = json_data['project']
edit_mode = Model.query.filter_by(id=id, status=False).first()
if projec == '请选择':
common = True
project_one = None
else:
common = False
project_one = Project.query.filter_by(status=False, project_name=projec).first().id
if not edit_mode:
mew = Model(model_name=name, model_user_id=current_user.id, common=common, project=project_one)
mew = Model(model_name=name, model_user_id=current_user.id)
db.session.add(mew)
db.session.commit()
return jsonify({'data': '编辑成功', 'code': 2})
edit_mode.model_name = name
edit_mode.common = common
edit_mode.project = project_one
try:
db.session.commit()
Expand All @@ -547,29 +547,31 @@ def put(self):
class TesteventVies(MethodView):
@login_required
def get(self, page=1):
if current_user.is_sper == True:
if current_user.is_sper is True:
events = []
events.append(Interfacehuan.query.filter_by(status=False).order_by(Interfacehuan.id.desc()).all())
else:
events = []
id = []
for project in current_user.quanxians:
if (project.projects.id in id) == False:
if (project.projects.id in id) is False :
events.append(
Interfacehuan.query.filter_by(project=project.projects.id, status=False).order_by(Project.id.desc()).all())
Interfacehuan.query.filter_by(project=project.projects.id, status=False).order_by(Interfacehuan.id.desc()).all())
id.append(project.projects.id)
projects_lsit = fenye_list(Ob_list=events, split=PageShow)
pages = range(1, len(projects_lsit) + 1)
if current_user.is_sper == True:
if current_user.is_sper is True:
projects = Project.query.filter_by(status=False).order_by(Project.id.desc()).all()
else:
projects = []
for i in current_user.quanxians:
if (i.projects in i) == False:
if (i.projects in i) is False:
projects.append(i.projects)
try:
pyth_post1 = projects_lsit[int(page) - 1]
return render_template('home/events.html', events=pyth_post1, pages=pages, projects=projects)
teststcentpage = projects_lsit[int(page) - 1]
return render_template('home/events.html', events=teststcentpage,
pages=pages,
projects=projects)
except:
return redirect(url_for('home.ceshihuanjing'))

Expand Down Expand Up @@ -600,10 +602,10 @@ def post(self):
if url_old:
return jsonify({"msg": u'测试环境必须是相互独立的', "code": 209, 'data': ''})
prkcyt = Project.query.filter_by(project_name=project).first()
end = Interfacehuan(url=url, desc=desc, project=prkcyt.id, database=name,
testevent = Interfacehuan(url=url, desc=desc, project=prkcyt.id, database=name,
databaseuser=usernmae, databasepassword=password, dbhost=host,
dbport=port, make_user=current_user.id)
db.session.add(end)
db.session.add(testevent)
try:
db.session.commit()
return jsonify({"data": u'添加测试环境成功!', "code": 2})
Expand All @@ -627,10 +629,10 @@ def put(self):
project = Project.query.filter_by(project_name=project).first()
event = Interfacehuan.query.filter_by(id=id).first()
if not event:
end = Interfacehuan(url=url, desc=desc, project=project.id, database=name,
newevent = Interfacehuan(url=url, desc=desc, project=project.id, database=name,
databaseuser=usernmae, databasepassword=password, dbhost=host,
dbport=port, make_user=current_user.id)
db.session.add(end)
db.session.add(newevent)
db.session.commit()
return jsonify({'data': '编辑成功', 'code': 2})
event.url = url
Expand Down
4 changes: 3 additions & 1 deletion app/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ class InterfaceTest(db.Model): # 测试用例表
is_reback = db.Column(db.Integer(), default=0) # 0 否 1是
is_monitor = db.Column(db.Integer(), default=0) # 1 监控用例
status = db.Column(db.Boolean(), default=False)
# rely_mock=db.Column(db.Boolean(),default=False) #是否依赖

def __repr__(self):
return self.Interface_name
Expand Down Expand Up @@ -282,6 +283,7 @@ class Model(db.Model): # 模块,有的接口是根据模块来划分的
Interfacetest = db.relationship('InterfaceTest', backref='models', lazy='dynamic')
Interface = db.relationship('Interface', backref='models', lazy='dynamic')
status = db.Column(db.Boolean(), default=False)
project = db.Column(db.Integer(), db.ForeignKey('projects.id'))

def __repr__(self):
return self.model_name
Expand Down Expand Up @@ -454,7 +456,7 @@ class TestGroup(db.Model):
'''测试组'''
__tablename__ = 'testgroup'
id = db.Column(db.Integer(), primary_key=True, autoincrement=True)
name = db.Column(db.String(252), unique=True)
name = db.Column(db.String(252))
projectid = db.Column(db.Integer())
status = db.Column(db.Integer(), default=0) # 状态,0正常,1删除
adduser = db.Column(db.Integer(), default=0)
Expand Down
Binary file modified app/task/__pycache__/views.cpython-37.pyc
Binary file not shown.
Loading

0 comments on commit 60fee19

Please sign in to comment.