接口自動化平臺搭建(三),設計表結構

'''

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)
相關文章
相關標籤/搜索