Skip to content

Commit 526dcea

Browse files
author
gitadmin
committed
优化
1 parent f60f9da commit 526dcea

File tree

6 files changed

+183
-38
lines changed

6 files changed

+183
-38
lines changed

Diff for: apps/core/views.py

-23
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,10 @@
99
from error_message import *
1010
from flask_restful import Api, Resource
1111
from flask.blueprints import Blueprint
12-
from apps.database import insert_database
13-
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
14-
15-
1612

1713
coreApi = Blueprint('core', __name__)
1814
core = Api(coreApi)
1915

20-
class AddTestCase(Resource):
21-
def post(self):
22-
case_id = '{0:%Y%m%d%H%M%S}'.format(datetime.datetime.now())[4:]
23-
story = request.json.get('story')
24-
title = request.json.get('title')
25-
method = request.json.get('method')
26-
path = request.json.get('path')
27-
req_data = request.json.get('req_data')
28-
sql = request.json.get('sql')
29-
expect1 = request.json.get('expect1')
30-
expect2 = request.json.get('expect2')
31-
expect3 = request.json.get('expect3')
32-
if (len(story)> 0 )&(len(title)> 0 )&(len(method)> 0 )&(len(path)> 0 )\
33-
&(len(req_data)> 0 )&(len(sql)> 0 )&(len(expect1) > 0)&(len(expect2) > 0)&(len(expect3) > 0): #判断不为空,则写入数据库
34-
sql_insert = "insert into TestCaseList value(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
35-
insert_database(sql_insert,case_id,story,title,method,path,req_data,sql,expect1,expect2,expect3)
36-
return {"code": 200, "msg": "Data insert successful."}
37-
else:
38-
return {"code": 400, "msg": "Incomplete data , please check."}
3916

4017
class TestCase(Resource):
4118
def post(self):

Diff for: apps/models.py

+137-5
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,18 @@
33
# @Author : Hui
44
# @File : models.py
55
from config import db
6-
from config import config
6+
from datetime import datetime
77
from passlib.apps import custom_app_context as pwd_context
8-
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer,SignatureExpired,BadSignature
98
# 创建模型对象
109

1110
class User(db.Model):
1211
__tablename__ = 'users'
13-
id = db.Column(db.Integer, primary_key = True)
14-
username = db.Column(db.String(32), index = True)
15-
password_hash = db.Column(db.String(128))
12+
id = db.Column(db.Integer, primary_key = True,comment='主键,自增')
13+
account = db.Column(db.String(64), unique=True, index=True, comment='账号')
14+
username = db.Column(db.String(32), comment='姓名')
15+
password_hash = db.Column(db.String(128),comment='密码')
16+
created_time = db.Column(db.DateTime, index=True, default=datetime.now)
17+
update_time = db.Column(db.DateTime, index=True, default=datetime.now, onupdate=datetime.now)
1618

1719
def hash_password(self, password):
1820
self.password_hash = pwd_context.encrypt(password)
@@ -21,6 +23,75 @@ def verify_password(self, password):
2123
return pwd_context.verify(password, self.password_hash)
2224

2325

26+
class Project(db.Model):
27+
__tablename__ = 'project'
28+
id = db.Column(db.Integer(), primary_key=True, comment='主键,自增')
29+
user_id = db.Column(db.Integer(), nullable=True, comment='所属的用户id')
30+
name = db.Column(db.String(64), nullable=True, unique=True, comment='项目名称')
31+
host = db.Column(db.String(1024), nullable=True, comment='测试环境')
32+
host_two = db.Column(db.String(1024), comment='开发环境')
33+
host_three = db.Column(db.String(1024), comment='线上环境')
34+
host_four = db.Column(db.String(1024), comment='备用环境')
35+
environment_choice = db.Column(db.String(16), comment='环境选择,first为测试,以此类推')
36+
principal = db.Column(db.String(16), nullable=True)
37+
variables = db.Column(db.String(2048), comment='项目的公共变量')
38+
headers = db.Column(db.String(1024), comment='项目的公共头部信息')
39+
func_file = db.Column(db.String(64), nullable=True, unique=True, comment='函数文件')
40+
modules = db.relationship('Module', order_by='Module.num.asc()', lazy='dynamic')
41+
configs = db.relationship('Config', order_by='Config.num.asc()', lazy='dynamic')
42+
case_sets = db.relationship('CaseSet', order_by='CaseSet.num.asc()', lazy='dynamic')
43+
created_time = db.Column(db.DateTime, index=True, default=datetime.now, comment='创建时间')
44+
update_time = db.Column(db.DateTime, index=True, default=datetime.now, onupdate=datetime.now)
45+
46+
47+
class Module(db.Model):
48+
__tablename__ = 'module'
49+
id = db.Column(db.Integer(), primary_key=True, comment='主键,自增')
50+
name = db.Column(db.String(64), nullable=True, comment='接口模块')
51+
num = db.Column(db.Integer(), nullable=True, comment='模块序号')
52+
project_id = db.Column(db.Integer, db.ForeignKey('project.id'), comment='所属的项目id')
53+
api_msg = db.relationship('ApiMsg', order_by='ApiMsg.num.asc()', lazy='dynamic')
54+
created_time = db.Column(db.DateTime, index=True, default=datetime.now, comment='创建时间')
55+
update_time = db.Column(db.DateTime, index=True, default=datetime.now, onupdate=datetime.now)
56+
57+
58+
class Config(db.Model):
59+
__tablename__ = 'config'
60+
id = db.Column(db.Integer(), primary_key=True, comment='主键,自增')
61+
num = db.Column(db.Integer(), nullable=True, comment='配置序号')
62+
name = db.Column(db.String(128), comment='配置名称')
63+
variables = db.Column(db.String(21000), comment='配置参数')
64+
func_address = db.Column(db.String(128), comment='配置函数')
65+
project_id = db.Column(db.Integer, db.ForeignKey('project.id'), comment='所属的项目id')
66+
created_time = db.Column(db.DateTime, index=True, default=datetime.now, comment='创建时间')
67+
update_time = db.Column(db.DateTime, index=True, default=datetime.now, onupdate=datetime.now)
68+
69+
70+
class CaseSet(db.Model):
71+
__tablename__ = 'case_set'
72+
id = db.Column(db.Integer(), primary_key=True, comment='主键,自增')
73+
num = db.Column(db.Integer(), nullable=True, comment='用例集合序号')
74+
name = db.Column(db.String(256), nullable=True, comment='用例集名称')
75+
project_id = db.Column(db.Integer, db.ForeignKey('project.id'), comment='所属的项目id')
76+
cases = db.relationship('Case', order_by='Case.num.asc()', lazy='dynamic')
77+
created_time = db.Column(db.DateTime, index=True, default=datetime.now, comment='创建时间')
78+
update_time = db.Column(db.DateTime, index=True, default=datetime.now, onupdate=datetime.now)
79+
80+
81+
class Case(db.Model):
82+
__tablename__ = 'case'
83+
id = db.Column(db.Integer(), primary_key=True, comment='主键,自增')
84+
num = db.Column(db.Integer(), nullable=True, comment='用例序号')
85+
name = db.Column(db.String(128), nullable=True, comment='用例名称')
86+
desc = db.Column(db.String(256), comment='用例描述')
87+
func_address = db.Column(db.String(256), comment='用例需要引用的函数')
88+
variable = db.Column(db.Text(), comment='用例公共参数')
89+
times = db.Column(db.Integer(), nullable=True, comment='执行次数')
90+
project_id = db.Column(db.Integer, db.ForeignKey('project.id'), comment='所属的项目id')
91+
case_set_id = db.Column(db.Integer, db.ForeignKey('case_set.id'), comment='所属的用例集id')
92+
environment = db.Column(db.Integer(), comment='环境类型')
93+
created_time = db.Column(db.DateTime, index=True, default=datetime.now, comment='创建时间')
94+
update_time = db.Column(db.DateTime, index=True, default=datetime.now, onupdate=datetime.now)
2495

2596

2697
# def __repr__(self):
@@ -40,6 +111,67 @@ class Test(db.Model):
40111
expect2 = db.Column(db.String(120),nullable=False,comment='预期结果2')
41112
expect3 = db.Column(db.String(120),nullable=False,comment='预期结果3')
42113

114+
class ApiMsg(db.Model):
115+
__tablename__ = 'api_msg'
116+
id = db.Column(db.Integer(), primary_key=True, comment='主键,自增')
117+
num = db.Column(db.Integer(), nullable=True, comment='接口序号')
118+
name = db.Column(db.String(128), nullable=True, comment='接口名称')
119+
desc = db.Column(db.String(256), nullable=True, comment='接口描述')
120+
variable_type = db.Column(db.String(32), nullable=True, comment='参数类型选择')
121+
status_url = db.Column(db.String(32), nullable=True, comment='基础url,序号对应项目的环境')
122+
up_func = db.Column(db.String(128), comment='接口执行前的函数')
123+
down_func = db.Column(db.String(128), comment='接口执行后的函数')
124+
method = db.Column(db.String(32), nullable=True, comment='请求方式')
125+
variable = db.Column(db.Text(), comment='form-data形式的参数')
126+
json_variable = db.Column(db.Text(), comment='json形式的参数')
127+
param = db.Column(db.Text(), comment='url上面所带的参数')
128+
url = db.Column(db.String(256), nullable=True, comment='接口地址')
129+
skip = db.Column(db.String(256), comment='跳过判断')
130+
extract = db.Column(db.String(2048), comment='提取信息')
131+
validate = db.Column(db.String(2048), comment='断言信息')
132+
header = db.Column(db.String(2048), comment='头部信息')
133+
module_id = db.Column(db.Integer, db.ForeignKey('module.id'), comment='所属的接口模块id')
134+
project_id = db.Column(db.Integer, nullable=True, comment='所属的项目id')
135+
created_time = db.Column(db.DateTime, index=True, default=datetime.now)
136+
update_time = db.Column(db.DateTime, index=True, default=datetime.now, onupdate=datetime.now)
137+
138+
139+
class CaseData(db.Model):
140+
__tablename__ = 'case_data'
141+
id = db.Column(db.Integer(), primary_key=True, comment='主键,自增')
142+
num = db.Column(db.Integer(), nullable=True, comment='步骤序号,执行顺序按序号来')
143+
status = db.Column(db.String(16), comment='状态,true表示执行,false表示不执行')
144+
name = db.Column(db.String(128), comment='步骤名称')
145+
up_func = db.Column(db.String(256), comment='步骤执行前的函数')
146+
down_func = db.Column(db.String(256), comment='步骤执行后的函数')
147+
skip = db.Column(db.String(64), comment='跳过判断函数')
148+
time = db.Column(db.Integer(), default=1, comment='执行次数')
149+
param = db.Column(db.Text(), default=u'[]')
150+
status_param = db.Column(db.String(64), default=u'[true, true]')
151+
variable = db.Column(db.Text())
152+
json_variable = db.Column(db.Text())
153+
status_variables = db.Column(db.String(64))
154+
extract = db.Column(db.String(2048))
155+
status_extract = db.Column(db.String(64))
156+
validate = db.Column(db.String(2048))
157+
status_validate = db.Column(db.String(64))
158+
header = db.Column(db.String(2048))
159+
status_header = db.Column(db.String(64))
160+
case_id = db.Column(db.Integer, db.ForeignKey('case.id'))
161+
api_msg_id = db.Column(db.Integer, db.ForeignKey('api_msg.id'))
162+
created_time = db.Column(db.DateTime, index=True, default=datetime.now)
163+
update_time = db.Column(db.DateTime, index=True, default=datetime.now, onupdate=datetime.now)
164+
165+
166+
class Report(db.Model):
167+
__tablename__ = 'report'
168+
id = db.Column(db.Integer(), primary_key=True, comment='主键,自增')
169+
case_names = db.Column(db.String(128), nullable=True, comment='用例的名称集合')
170+
read_status = db.Column(db.String(16), nullable=True, comment='阅读状态')
171+
performer = db.Column(db.String(16), nullable=True, comment='执行者')
172+
project_id = db.Column(db.String(16), nullable=True)
173+
create_time = db.Column(db.DateTime(), index=True, default=datetime.now)
174+
43175

44176
#
45177
# def __repr__(self):

Diff for: apps/users/urls.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# @Time : 2020/3/8 下午10:37
33
# @Author : Hui
44
# @File : urls.py
5-
from .views import user,AddUsers
5+
from .views import user,Register,Login
66

7-
user.add_resource(AddUsers,'/api/add/users')
7+
user.add_resource(Login,'/login')
8+
user.add_resource(Register,'/api/add/register')

Diff for: apps/users/views.py

+41-7
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from flask_restful import Api,Resource
88
from flask.blueprints import Blueprint
99
from apps.models import User
10+
from utlis.common import create_token
1011
from error_message import *
1112
from config import db
1213
from flask_httpauth import HTTPBasicAuth
@@ -20,17 +21,50 @@
2021
def auth_test():
2122
return jsonify(code=0,msg="auth")
2223

23-
class AddUsers(Resource):
24+
class Login(Resource):
25+
def post(self):
26+
res_dir = request.get_json()
27+
account = res_dir.get("account")
28+
password = res_dir.get("password")
29+
if account is None:
30+
return jsonify({"code":400, "msg":"账户不能为空"})
31+
if password is None:
32+
return jsonify({"code":400, "msg":"密码不能为空"})
33+
if not all([account, password]):
34+
return jsonify({"code":400, "msg":"账户密码不能为空"})
35+
try:
36+
user = User.query.filter_by(account=account).first()
37+
except Exception:
38+
return jsonify(code=400, msg=login_user_not_message)
39+
if user is None or not user.verify_password(password):
40+
return jsonify({"code":400, "msg":"账户或者密码错误"})
41+
token = create_token(user.id)
42+
return jsonify({"code": 200, "msg": "success", "token": token})
43+
44+
class Register(Resource):
2445
@login_required
2546
def post(self):
47+
account = request.json.get('account')
2648
username = request.json.get('username')
2749
password = request.json.get('password')
28-
if username is None or password is None:
29-
return {'code': 400, "msg": core_add_success}
30-
if User.query.filter_by(username = username).first() is not None:
31-
return {'code': 400, "msg": users_user_in_db}
32-
user = User(username = username)
50+
if account is None or password is None or username is None:
51+
return jsonify({'code': 400, "msg": "账户密码不能为空"})
52+
if User.query.filter_by(account = account).first() is not None:
53+
return jsonify({'code': 400, "msg": "账户已存在"})
54+
user = User(account = account,username=username)
3355
user.hash_password(password)
3456
db.session.add(user)
3557
db.session.commit()
36-
return {'code':200,"msg":user_user_add_success}
58+
return {'code':200,"msg":"账户添加成功"}
59+
60+
def get(self):
61+
account = request.json.get('account')
62+
if account:
63+
_data = User.query.filter(User.account.like('%{}%'.format(account)))
64+
if not _data:
65+
return jsonify({"code": 400, "msg": "没找到该账户"})
66+
else:
67+
_data = User.query
68+
69+
70+

Diff for: config.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@
1212

1313

1414
config = {
15-
'testing': TestingConfig,
15+
'testing': '',
1616
'SECRET_KEY':"1qaz@wsx3edc"
1717
}

Diff for: error_message.py

+1
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@
1414
users_user_add_success='账户添加成功'
1515

1616

17+

0 commit comments

Comments
 (0)