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


'''

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.建立基礎表,相當於公共字段,其他表可以繼承,主要是創建時間和更新時間

2.建立用戶信息表,繼承公共表,主要記錄用戶名,密碼,郵箱地址

3.三級關系(項目——》模塊——》用例)模塊外鍵關聯項目,用例外鍵關聯模塊

  在新增用例的時候確定關聯關系

 

  

4.公共header外鍵關聯在模塊下面,這樣在新增用例的時候可以直接獲取到,與用例的關聯關系一致

  在新增header中確認關聯關系

  

5.創建前置與后置方法表,主要是為了對請求前進行處理,比如說時間戳,參數關聯,公共參數,MD5與AES加密等等,后置是對返回進行處理比如說參數提取,結果斷言,返回是加密字符串按照相應秘鑰進行解密等等

  在新增用例的時候進行前置后置選擇

  

6.測試報告主要是為了保留歷史記錄向用戶展示,同時便於以后對接口數據分析留下數據

將返回結果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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM