接口測試平台開發之接口開發(項目管理、接口管理、用例管理)


在瀏覽器里輸入https://www.showdoc.cc/xinghan?page_id=2778492898901704,點擊回車看到好多個接口文檔,接下來開發項目管理接口,在星瀚項目中點擊項目管理,一直顯示玩命加載中,檢查看這個接口http://127.0.0.1:8000/api/project一直報404,證明這個接口沒有開發,首先配一下url,在urls.py里新增path('project', views.ProjectView.as_view()),然后在forms.py里新增如下圖:

項目管理和全局參數接口基本一樣,需要增刪改查,因此也要繼承NbView,ProjectView里的代碼如下圖:

然后點擊項目管理,頁面可以打開,點擊添加按鈕,錄入完必填信息后,點擊確定按鈕,提示如下圖:

報錯了,創建全局參數的時候沒有報錯,因為全局參數沒有和別的表做關聯,而項目管理是和user表做關聯了,打開F12,點擊Application,點擊Local Storage,單擊http://localhost:63342,可以看到前端緩存信息的位置,如下圖:

也可以看pycharm里的日志,打印出<QueryDict: {'name': ['本機項目'], 'desc': ['本機項目0321'], 'host': ['http://127.0.0.1:8000'], 'user': ['undefined']}>,看到userIdundefined,這是登錄接口登錄成功時返回的,項目管理拿着userId向后台請求的時候必然會報錯,為了解決這個問題,找到views.py文件里的LoginView類,看代碼登錄成功的時候返回了token和user,於是加上代碼user_id=user.id(因為project表里是user_id),如下圖:

然后重啟服務,再重新登錄,看到userId是2,如下圖:

再次添加,可以添加成功,在頁面、數據庫里都能看到添加的數據,如下圖:

然后編輯查詢刪除,都ok,在項目管理這個get請求中返回的user是2,但是接口文檔中user返回的是人,如下圖:

於是需要重構代碼,重寫GetView的get方法,把get方法拷貝到views.py文件下的ProjectView類下,print(instance)打印出來項目管理,是一個數據庫對象,代表項目管理這一條記錄,於是添加代碼model_dict['user'] = instance.user.username,新增代碼如下圖:

在Network的Preview里看到user是dsx了,重寫成功了,接下來開發接口管理接口,在星瀚項目中點擊接口管理,一直顯示玩命加載中,檢查看這個接口http://127.0.0.1:8000/api/interface一直報404,證明這個接口沒有開發,首先配一下url,在urls.py里新增path('interface', views.InterfaceView.as_view()),然后在forms.py里新增如下圖:

接口管理和項目管理接口基本一樣,需要增刪改查,因此也要繼承NbView,InterfaceView里的代碼如下圖:

然后點擊接口管理,頁面可以打開,點擊添加按鈕,錄入完必填信息后,點擊確定按鈕,可以添加成功,編輯、刪除、按照接口名稱查詢也ok,但是按照歸屬項目查詢實現不了,於是修改一下代碼,因為歸屬項目是下拉框選擇,所以filter_field按照project查詢,同時增加project_idproject_name,修改如下圖:

所有功能都OK了,唯獨缺少一個按照全部項目進行查詢,接下來開發用例管理接口,在星瀚項目中點擊用例管理,一直顯示玩命加載中,檢查看這個接口http://127.0.0.1:8000/api/case一直報404,證明這個接口沒有開發,首先配一下url,在urls.py里新增path('case', views.CaseView.as_view()),然后在forms.py里新增如下圖:

用例管理和接口管理接口基本一樣,需要增刪改查,因此也要繼承NbView,拷貝InterfaceView類的代碼到CaseView中,修改后代碼如下圖:

刷新用例管理頁面,可以打開,點擊添加按鈕,輸入用例標題,選擇所屬項目的時候會報錯,頁面一直轉圈,如下圖所示:

在Network里找到標紅的URL,發現這個url(/api/get_rely_case)報404,要找到每個歸屬項目下的所有用例展示到依賴用例這里,於是要根據需求再開發一個get_rely_case接口,get_rely_case要傳一個project_id,根據項目id獲取項目下的所有用例,在views.py里開發一個RelyCaseView類,在urls.py里新增path('get_rely_case', views.RelyCaseView.as_view()),views.py文件例新增代碼如下圖:

用例管理頁面,點擊添加按鈕,選擇一個歸屬項目,添加對話框沒有loading,說明get_rely_case接口調用成功了,Network的Preview里看到data的返回值為空,如下圖:

先添加一條用例,添加完點擊確定按鈕時,報status是必填項,如下圖:

由於models.py文件里case默認為2,只是在數據庫里是2,forms.py里的CaseForm會去驗證status這個字段,沒有傳,所以報status是必填項,如果寫了null=True、blank=True,CaseForm就不去驗證它了,為解決這個問題在forms.py文件里CaseForm類中排除字段添加上statusexclude = ['is_delete', 'status'],排除這個字段不去驗證它,再次點擊確定按鈕,在頁面上可以看到添加成功的用例,如下圖:

支持修改刪除和按照titleproject查詢功能,再次添加一條用例,選擇歸屬項目的時候報錯了,添加對話框一直loading中,和開始遇到的情況是一樣的,這是因為代碼沒有寫完,按照接口文檔的返回是id和title,把.all()改成.values('id', 'title')qs_data = models.Case.objects.filter(project_id=project_id).values('id', 'title'),.values('id', 'title')的意思是只獲取id和title,再次添加,這次OK了,沒有報錯,也把依賴用例列出來了,如下圖:

點擊添加成功的test哈哈,發現了bug,依賴用例沒有顯示出來上次的用例,點擊獲取接口時把兩條用例都帶出來,而且test哈哈還能依賴test哈哈,這里有問題,如下圖:

同時在Network下的Preview里出現了一個鏈接,get_rely_case?project_id=7&case_id=5,可以看出編輯操作時會傳case_id,添加時不傳case_id,因此要修改代碼如下圖:

添加時,選擇歸屬項目,把依賴用例帶出來了,勾上依賴用例,添加成功了,如下圖:

編輯時,沒有把依賴用例傳過來,這是個bug,如下圖:

點擊獲取接口,彈出依賴的用例,還得依賴一次,如下圖:

 

但是看接口文檔可以發現返回rely_case字段,格式是

"rely_case": [
                       {
                          "id": 4,
                          "title": "項目請求"
                       }
                    ]
rely_case默認為空顯示,用外鍵自關聯的方式將數據取出來,在sksystem下新建一個目錄core,在core下新建一個case_utils.py文件,定義一個方法
get_premise_case,傳一個instance,在views.py里導入from .core.case_utils import get_premise_case,然后在CaseView類里的get方法下新增model_dict['rely_case'] = get_premise_case(instance),接下來再寫get_premise_case方法,先print(instance),刷新用例管理頁面,在日志里可以看到打印出來的用例標題,證明拿到了用例對象,get_premise_case方法的代碼如下圖:

刷新用例管理頁面,在日志里可以看到打印出來的用例對象的數據和rely_cases,如下圖:

看case表里注冊和test哈哈對應的id是65,而case_premise沒有對應的id,所以打印出來是[],在添加時,勾選依賴用例,點擊確定的時候沒有創建依賴關系,post走的是NbView里PostView下的post方法,所以要重寫post方法,把PostView下的post方法拷到get方法的下面,修改后的代碼如下圖:

添加成功,查詢也能看到依賴的用例,編輯和刪除也沒有問題


免責聲明!

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



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