接口自动化平台搭建(三),设计表结构

'''

DateTimeField.auto_now:这个参数的默认值为false,设置为true时,可以在保存该字段时,将其值设置为当前时间,而且每次修改model,都会自动更新。所以这个参数在须要存储“最后修改时间”的场景下,十分方便。须要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你没法程序中手动为字段赋值;若是使用django再带的admin管理器,那么该字段在admin中是只读的。

DateTimeField.auto_now_add:这个参数的默认值也为False,设置为True时,会在model对象第一次被建立时,将字段的值设置为建立时的时间,之后修改对象时,字段的值不会再更新。该属性一般被用在存储“建立时间”的场景下。与auto_now相似,auto_now_add也具备强制性,一旦被设置为True,就没法在程序中手动为字段赋值,在admin中字段也会成为只读的。


'''
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)
相关文章
相关标签/搜索