class User(UserMixin, db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True, autoincrement=True) telephone = db.Column(db.String(100), nullable=False) username = db.Column(db.String(100), nullable=False) password = db.Column(db.String(100), nullable=False) role = db.Column(db.String(100)) status = db.Column(db.SmallInteger, nullable=False, default=1, doc="用户状态,0-禁用,1-启动") create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), doc="创建时间") update_datetime = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), doc="更新时间") def __init__(self, *args, **kwargs): self.telephone = kwargs.get('telephone') self.username = kwargs.get('username') self.password = generate_password_hash(kwargs.get('password')) # 加密密码 self.role = kwargs.get('role') def __repr__(self): """Define the string format for instance of User.""" return "<Model User `{}`>".format(self.username) def check_password(self, raw_password): result = check_password_hash(self.password, raw_password) return result def get_id(self, life_time=None): "生成token" key = current_app.config.get("SECRET_KEY", "The securet key by C~C!") # current app 拿不到 s = URLSafeSerializer(key) browser_id = create_browser_id() if not life_time: life_time = current_app.config.get("TOKEN_LIFETIME") token = s.dumps([self.id, self.username, self.password, browser_id, life_time]) return token
class TestCaseStep(db.Model): __tablename__ = 'test_case_step' id = db.Column(db.Integer, primary_key=True, autoincrement=True) rank = db.Column(db.Integer, nullable=False, comment="步骤") title = db.Column(db.String(100), comment="用例步骤名称") action_id = db.Column(db.Integer, db.ForeignKey('action.id'), nullable=False, comment="执行动作") skip = db.Column(db.Integer, nullable=False, comment="是否略过") take_screen_shot = db.Column(db.Integer, default=0, nullable=False, comment="是否截图") wait_time = db.Column(db.Integer, default=0, nullable=False, comment="用例等待时间") input_key = db.Column(db.String(100), comment="输入参数名称") output_key = db.Column(db.String(100), comment="输出参数名称") test_case_id = db.Column(db.Integer, db.ForeignKey('test_case.id'), comment="所属用例ID") create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), comment="创建时间") update_datetime = db.Column( db.DateTime, nullable=False, server_default=db.text( "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), comment="更新时间") action = db.relationship('Action', backref=db.backref('step'))
class TestCaseSuitLog(db.Model): __tablename__ = 'test_case_suit_log' id = db.Column(db.Integer, primary_key=True, autoincrement=True) test_log_id = db.Column(db.Integer, db.ForeignKey('test_log.id'), comment="所属测试日志ID") test_case_suit_id = db.Column(db.Integer, db.ForeignKey('test_case_suit.id'), comment="测试集ID") test_case_suit_title = db.Column(db.String(100), nullable=False, comment="测试集标题") run_test_result = db.Column(db.Integer, nullable=False, comment="测试执行结果:0失败,1成功") run_test_suit_start_time = db.Column( db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), comment="测试集执行开始时间") run_test_suit_end_time = db.Column( db.DateTime, nullable=False, server_default=db.text( "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), comment="测试集执行结束时间") run_test_suit_times = db.Column(db.String(100), default=0, comment="测试集执行用时") test_case_log = db.relationship('TestCaseLog', order_by='TestCaseLog.action_start_time')
class File_level(db.Model): __tablename__ = 'file_level' id = db.Column(db.Integer, primary_key=True, autoincrement=True) project_id = db.Column(db.Integer, db.ForeignKey('project.id'), nullable=False, ) pro_id = db.Column(db.String(100), nullable=False) label = db.Column(db.String(100)) create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), doc="创建时间") update_datetime = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), doc="更新时间") project = db.relationship('Project', backref=db.backref('file_level', order_by=create_datetime.desc()))
class Project(db.Model): __tablename__ = 'project' id = db.Column(db.Integer, primary_key=True, autoincrement=True) name = db.Column(db.String(100), nullable=False) env_id = db.Column(db.Integer) author_id = db.Column(db.Integer, db.ForeignKey('user.id')) create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), doc="创建时间") update_datetime = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), doc="更新时间") author = db.relationship('User', backref=db.backref('project'))
class Request_api(db.Model): __tablename__ = 'request_api' id = db.Column(db.Integer, primary_key=True, autoincrement=True) req_name = db.Column(db.String(100), nullable=False) project_id = db.Column(db.Integer, db.ForeignKey('project.id'), nullable=False, ) file_level_id = db.Column(db.Integer, db.ForeignKey('file_level.id'), nullable=False, ) req_method = db.Column(db.String(100), nullable=False) req_url = db.Column(db.String(100), nullable=False) req_data = db.Column(db.Text) create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), doc="创建时间") update_datetime = db.Column(db.DateTime, nullable=False, server_default=db.text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), doc="更新时间") # 在Req_api可以通过project(关系名称)关联到project表根据project_id, 同时在Project表也可以通过api,关联到Comment表 project = db.relationship('Project', backref=db.backref('request_api', order_by=create_datetime.desc())) file_level = db.relationship('File_level', backref=db.backref('request_api', order_by=create_datetime.desc()))
class Element(db.Model): __tablename__ = 'element' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(100), nullable=False, comment="目录名") type_for_android = db.Column(db.String(30), comment="Android查找方式") loc_for_android = db.Column(db.String(200), comment="Android信息描述") type_for_ios = db.Column(db.String(30), comment="IOS查找方式") loc_for_ios = db.Column(db.String(200), comment="IOS信息描述") page_id = db.Column(db.Integer, db.ForeignKey('page.id'), comment="所属页面ID") create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), comment="创建时间") update_datetime = db.Column( db.DateTime, nullable=False, server_default=db.text( "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), comment="更新时间") page = db.relationship('Page', backref=db.backref('element'))
class Project(db.Model): __tablename__ = 'project' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(100), nullable=False, comment="项目名") env_id = db.Column(db.Integer) author_id = db.Column(db.Integer, db.ForeignKey('user.id'), comment="项目名") is_del = db.Column(db.Integer, nullable=False, default=0, comment="是否已删除") create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), comment="创建时间") update_datetime = db.Column( db.DateTime, nullable=False, server_default=db.text( "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), comment="更新时间") author = db.relationship('User', backref=db.backref('project')) test_case = db.relationship('TestCase', backref=db.backref('project')) test_case_suit = db.relationship('TestCaseSuit', backref=db.backref('project')) page = db.relationship('Page', backref=db.backref('project'))
class FunctionInfo(db.Model): __tablename__ = 'function_info' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(100), nullable=False, unique=True, comment="方法名") fun_title = db.Column(db.String(100), nullable=False, unique=True, comment="方法名") type = db.Column(db.Integer, comment="所属系统:0通用,1:Android,2:IOS,3:PC") description = db.Column(db.String(100), comment="方法说明") create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), comment="创建时间") update_datetime = db.Column( db.DateTime, nullable=False, server_default=db.text( "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), comment="更新时间")
class Action(db.Model): __tablename__ = 'action' id = db.Column(db.Integer, primary_key=True, autoincrement=True) fun_id = db.Column(db.Integer, db.ForeignKey('function_info.id'), nullable=False, comment="方法id") ele_id = db.Column(db.Integer, db.ForeignKey('element.id'), comment="所操作元素id") page_id = db.Column(db.Integer, db.ForeignKey('page.id'), comment="所属页面ID") create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), comment="创建时间") update_datetime = db.Column( db.DateTime, nullable=False, server_default=db.text( "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), comment="更新时间") fun = db.relationship('FunctionInfo') ele = db.relationship('Element')
class Page(db.Model): __tablename__ = 'page' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(100), nullable=False, comment="页面名") project_id = db.Column(db.Integer, db.ForeignKey('project.id'), comment="项目id") parent_directory = db.Column(db.Integer, nullable=False, default=0, comment="父级目录ID") is_del = db.Column(db.Integer, nullable=False, default=0, comment="是否已删除") create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), comment="创建时间") update_datetime = db.Column( db.DateTime, nullable=False, server_default=db.text( "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), comment="更新时间") action = db.relationship('Action', backref=db.backref('page'))
class TestSuitStep(db.Model): __tablename__ = 'test_suit_step' id = db.Column(db.Integer, primary_key=True, autoincrement=True) rank = db.Column(db.Integer, nullable=False, comment="执行顺序") test_case_id = db.Column(db.Integer, db.ForeignKey('test_case.id'), nullable=False, comment="用例") skip = db.Column(db.Integer, nullable=False, comment="是否略过") test_case_suit_id = db.Column(db.Integer, db.ForeignKey('test_case_suit.id'), comment="所属用例集ID") input_args = db.Column(db.Text, comment="输入参数对象") create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), comment="创建时间") update_datetime = db.Column( db.DateTime, nullable=False, server_default=db.text( "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), comment="更新时间") test_case = db.relationship('TestCase', backref=db.backref('suit'))
class TestCaseSuit(db.Model): __tablename__ = 'test_case_suit' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(100), nullable=False, comment="用例集名") project_id = db.Column(db.Integer, db.ForeignKey('project.id'), comment="所属项目ID") is_del = db.Column(db.Integer, nullable=False, default=0, comment="是否已删除") parent_directory = db.Column(db.Integer, nullable=False, default=0, comment="父级目录ID") create_datetime = db.Column(db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), comment="创建时间") update_datetime = db.Column( db.DateTime, nullable=False, server_default=db.text( "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), comment="更新时间") suit_step = db.relationship('TestSuitStep', backref=db.backref('case_suit'), order_by='TestSuitStep.rank')
class TestLog(db.Model): __tablename__ = 'test_log' id = db.Column(db.Integer, primary_key=True, autoincrement=True) equipment_id = db.Column(db.Integer, nullable=False, comment="设备ID") equipment_title = db.Column(db.String(100), nullable=False, comment="设备") equipment_args = db.Column(db.Text, comment="设备配置参数") run_test_result = db.Column(db.Integer, default=0, comment="测试执行结果:0失败,1成功") run_test_start_time = db.Column( db.DateTime, server_default=db.text("CURRENT_TIMESTAMP"), comment="测试执行开始时间") run_test_end_time = db.Column( db.DateTime, nullable=False, server_default=db.text( "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), comment="测试执行结束时间") run_test_times = db.Column(db.String(100), default=0, comment="测试执行用时时间") test_case_suit_log = db.relationship( 'TestCaseSuitLog', order_by='TestCaseSuitLog.run_test_suit_start_time')
class EquipmentIncludeTesSuit(db.Model): __tablename__ = 'equipment_include_test_suit' id = db.Column(db.Integer, primary_key=True, autoincrement=True) equipment_id = db.Column(db.Integer, db.ForeignKey('equipment_management.id'), nullable=False, comment="设备ID") test_case_suit_id = db.Column(db.Integer, db.ForeignKey('test_case_suit.id'), comment="测试集ID") rank = db.Column(db.Integer, nullable=False, comment="执行顺序") update_datetime = db.Column( db.DateTime, nullable=False, server_default=db.text( "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"), comment="更新时间") test_case_suit = db.relationship('TestCaseSuit')