'''
'''
class BaseTable(models.Model): create_time = models.DateTimeField(auto_now_add=True) update_time = models.DateTimeField(auto_now=True) class Meta: #在Meta内嵌类中设置 abstract=True ,该类就不能建立任何数据表。然而若是将它作为其余 model 的基类,那么该类的字段就会被添加到子类中。 abstract = True verbose_name = "公共字段表" db_table = 'BaseTable'
1.创建基础表,至关于公共字段,其余表能够继承,主要是建立时间和更新时间django
2.创建用户信息表,继承公共表,主要记录用户名,密码,邮箱地址json
3.三级关系(项目——》模块——》用例)模块外键关联项目,用例外键关联模块app
在新增用例的时候肯定关联关系测试
4.公共header外键关联在模块下面,这样在新增用例的时候能够直接获取到,与用例的关联关系一致加密
在新增header中确认关联关系spa
5.建立前置与后置方法表,主要是为了对请求前进行处理,好比说时间戳,参数关联,公共参数,MD5与AES加密等等,后置是对返回进行处理好比说参数提取,结果断言,返回是加密字符串按照相应秘钥进行解密等等code
在新增用例的时候进行前置后置选择对象
6.测试报告主要是为了保留历史记录向用户展现,同时便于之后对接口数据分析留下数据blog
将返回结果json解析继承
7.文件管理表是为了有的接口须要文件,图片等信息,咱们须要一个有文件的上传与下载功能,例如(http://0.0.0.0:8000/static/file/ws.jpg)
#继承公共字段 class UserType(BaseTable): class Meta: verbose_name = '用户类型' db_table = 'UserType' type_name = models.CharField(max_length=20) type_desc = models.CharField(max_length=50) objects = UserTypeManager() #继承公共字段 class UserInfo(BaseTable): class Meta: verbose_name = '用户信息' db_table = 'UserInfo' username = models.CharField(max_length=20) password = models.CharField(max_length=20) email = models.EmailField() #默认为1 status = models.IntegerField(default=1) # user_type = models.ForeignKey(UserType, on_delete=models.CASCADE) objects = UserInfoManager() #继承公共字段 class ProjectInfo(BaseTable): class Meta: verbose_name = '项目信息' db_table = 'ProjectInfo' #项目名称 pro_name = models.CharField(max_length=50) #负责人 responsible_name = models.CharField(max_length=20) #测试人员 test_user = models.CharField(max_length=100) #开发人员 dev_user = models.CharField(max_length=100) #发布应用 publish_app = models.CharField(max_length=60) #简要描述 simple_desc = models.CharField(max_length=100, null=True) #其余信息 other_desc = models.CharField(max_length=100, null=True) #默认状态 1有效 0无效 status = models.IntegerField(default=1) #表操做类 objects = ProjectInfoManager() #继承公共字段 class ModuleInfo(BaseTable): class Meta: verbose_name = '模块信息' db_table = 'ModuleInfo' #模块名称 module_name = models.CharField(max_length=50) #外键关联ProjectInfo表(,须要在Foreign的第二参数中加入on_delete=models.CASCADE 主外关系键中,级联删除,也就是当删除主表的数据时候从表中的数据也随着一块儿删除) belong_project = models.ForeignKey(ProjectInfo, on_delete=models.CASCADE) #测试人员 test_user = models.CharField(max_length=50) #提测时间 lifting_time = models.DateTimeField(auto_now_add=True) #简要描述 simple_desc = models.CharField(max_length=100, null=True) #其余信息 other_desc = models.CharField(max_length=100, null=True) status = models.IntegerField(default=1) # 表操做类 objects = ModuleInfoManager() #继承公共字段 class HeaderCaseInfo(BaseTable): class Meta: verbose_name = '公共header表' db_table = 'HeaderCaseInfo' #headers名称 name = models.CharField(max_length=50) #type类型为2 是headers配置 type = models.IntegerField(default=2) #项目 belong_project = models.CharField(max_length=50) #模块 belong_module = models.ForeignKey(ModuleInfo, on_delete=models.CASCADE) #建立者 author = models.CharField(max_length=20) #headers内容 headers = models.TextField(null=True) status = models.IntegerField(default=1) #表操做类 objects=HeaderCaseInfoManager() #继承公共字段 class TestCaseInfo(BaseTable): class Meta: verbose_name = '用例信息' db_table = 'TestCaseInfo' #type是1 就是用例 type = models.IntegerField(default=1) name = models.CharField(max_length=50) belong_project = models.CharField(max_length=50) belong_module = models.ForeignKey(ModuleInfo, on_delete=models.CASCADE) include = models.CharField(max_length=200, null=True) author = models.CharField(max_length=20) request = models.TextField() status = models.IntegerField(default=1) objects = TestCaseInfoManager() user_name=models.CharField(max_length=30,null=True) #前置方法表 class Preposition(models.Model): class Meta: verbose_name = "前置方法表" db_table = 'Preposition' #前置方法名称 name=models.CharField(max_length=250,unique=True) #后置方法表 class Postposition(models.Model): class Meta: verbose_name = "后置方法表" db_table = 'Postposition' #后置方法名称 name=models.CharField(max_length=250,unique=True) #继承公共字段 class TestReports(BaseTable): class Meta: verbose_name = "测试报告" db_table = 'TestReports' #测试报告名称 report_name = models.CharField(max_length=50) #用户名 user_name=models.CharField(max_length=50) #名称 belong_project = models.CharField(max_length=50,null=True) #模块名称 belong_module = models.CharField(max_length=50,null=True) #结果 reports = models.TextField() status = models.IntegerField(default=1) #请求返回内容 class response_body(models.Model): class Meta: verbose_name = "请求返回内容表" db_table = 'response_body' #请求返回内容 response_body=models.TextField() #提取返回内容放置表 class extract(BaseTable): class Meta: verbose_name = "提取返回内容放置表" db_table = 'extract' #提取参数key key=models.CharField(max_length=64,unique=True) #提取参数value value=models.CharField(max_length=250) #继承公共字段 class File(BaseTable): class Meta: verbose_name = "文件管理" db_table = 'File' #文件名称(惟一) name = models.CharField(max_length=250,unique=True) #用户名 user_name=models.CharField(max_length=50) #路径 path = models.CharField(max_length=50) status = models.IntegerField(default=1) #继承公共字段 class Parameters(BaseTable): class Meta: verbose_name = "公共参数" db_table = 'Parameters' #文件名称(惟一) name = models.CharField(max_length=250,unique=True) #用户名 user_name=models.CharField(max_length=50) #公共配置 parameters = models.TextField() #状态 1有效 0失效 status = models.IntegerField(default=1)