1. 程式人生 > >【C#程式設計最佳實踐 十三】介面測試實踐

【C#程式設計最佳實踐 十三】介面測試實踐

進入前後端分離開發的第二個階段,也就是和前端聯調之前,自己首先應該除錯下介面是否能跑通,也就是介面測試,這樣在和前端聯調的時候能夠做到心中有數,快速定位問題所在。

介面測試與單元測試

單元測試

單元測試我認為更多的是對通用的最基礎方法的測試,換句話說,就是不摻雜業務的測試,應用最多的場景可以說就是對資料的增刪改查的測試,一個好的規範的單元測試可以保證小規模程式碼塊功能的正常實現,且該部分程式碼一般來說是被大量引用的。關於單元測試,我在另一篇博文裡有詳細提到:

介面測試

介面測試我認為是對一個最基本的業務模組的測試也就是通常意義上的一個方法的實現,介面測試往往就涉及業務,並且需要網頁訪問,和前端聯調前需要確認返回結果,該部分程式碼不會被大量引用,是和業務緊密相關的。

介面測試與單元測試的區別

1,單元測試需要自己編寫;介面測試不需要,只要使用工具就好,例如PostMan
2,單元測試和業務關聯性很小,基本無關;介面測試和業務緊密關聯
3,單元測試多應用在provider層,和資料有互動的地方,在寫這部分程式碼時就順便編寫;介面測試多在Controller層,在和前端互動的地方,在和前端聯調之前使用工具做好介面測試

測試工具PostMan

下載

該工具效能強大,具體怎麼用我這裡不再贅述,已經有人詳細的做了介紹,地址如下:

下載的話需要翻牆,需要VPN,這裡為了方便大家,我將下載好的放到百度雲盤上,大家可以隨意下載

介紹

主面板

主面板主要分三個區域,一個是歷史和集合管理一個是新建請求一個是返回值檢視
這裡寫圖片描述

歷史和集合部分

主面板作半部分可以建立資料夾,每一個請求可以說是最基本的業務功能,那麼更大的一整塊兒功能就以資料夾的形式而存在,Collections裡也可以再細分,按照功能佈局可以層層新增
這裡寫圖片描述

建立url部分

建立url部分,左上部分可以選擇介面訪問方式,get或者是post,還有多種選擇,但不常用。中間是域名填寫的地方,下半部分是新增引數的地方,key是引數名,value是引數值
這裡寫圖片描述

特別特別注意:*postman依據介面接收型別自動識別傳入引數型別,所以填寫的字串什麼的不用加雙引號*,這裡是個大坑,我之前分引數型別傳入,結果不識別雙引號,導致獲取不到資料,坑了很久,值得特別注意

返回值檢視

多種返回值檢視方式可以檢視,無論是xml還是json,等等,常用的是json

這裡寫圖片描述

匯出

也可以將已經完成的介面測試匯出來,給前端使用,只要和前端約定好,就可以做到不需要天天跑到前端開發那裡開會,一份json格式的匯出檔案搞定一切
這裡寫圖片描述

疑惑和後續需要學習

1,postman在測試介面的時候,可能介面功能內部需要一些值(並非通過引數獲取,而是上下文賦值),這種情況該怎麼使用postman
2,302跳轉請求的時候postman怎麼處理

傳入引數為物件

2018-3-09更新

前端調整

如果前端傳入引數為物件,則postman需要做調整
1,首先傳遞型別為post
2,在Header中建立 key:Content-Type, value:application/json
這裡寫圖片描述
3,在body的引數傳遞中改為row
這裡寫圖片描述

後端用動態類接收引數

這裡寫圖片描述

傳入引數為dynamic,動態類,接收後賦值,前端可以選擇傳幾個引數,後端如果沒有接收到前端引數,賦預設值null,所以如果是int型別的化,要看以下注意:
注意:int型別的需要一次型別轉換,否則如果不傳會報錯。

新增cookie

1,首先獲取頁面的cookie
這裡寫圖片描述

2,然後再postman裡新增cookie

這裡寫圖片描述

3,名為name,值為value
這裡寫圖片描述

除錯

vs斷點除錯,非常好用,只需附加到程序並且打好斷點,從postman發請求就可以直接跳到對應的斷點上
這裡寫圖片描述

注意,附加的時候是w3wp.exe

如果遇到目標與源不一致的情況的時候,可以依照如下步驟解決
1,等待1分鐘左右
2,重新生成解決方案3
3,關閉vs,重新生成解決方案

相關推薦

C#程式設計最佳實踐 十三介面測試實踐

進入前後端分離開發的第二個階段,也就是和前端聯調之前,自己首先應該除錯下介面是否能跑通,也就是介面測試,這樣在和前端聯調的時候能夠做到心中有數,快速定位問題所在。 介面測試與單元測試 單元測試 單元測試我認為更多的是對通用的最基礎方法的測試,換句話

C#程式設計最佳實踐介面使用實踐

目前使用到的介面使用方法大概就以下這兩種,之後在持續更新,第一種就是使用工廠,第二種就是字典類。接下來詳細介紹這兩種方法,用好了就可以說把多型玩兒溜了。 工廠類的使用實踐 建立工廠類 namespace Factory { internal

C#程式設計最佳實踐資料庫操作相關實踐

本篇條目和詳細操作均會發生調整,凡是和資料庫有關的實踐都將在這裡記錄,本篇使用的資料庫為sqlServer。 常用SQL語句總結 關於庫,表的操作 查詢庫內所有具有某個欄位的表名

C#程式設計最佳實踐程式碼書寫規範實踐

以下規範都是個人書寫習慣,便於閱讀總結的個人規範,對於每個人可以有自己的理解。終極目標就是消除警告呀哈哈。 佈局規範 對於專案的總體規範,建議分為以下幾部分:1,對外提供服務的檔案。2,配置檔案和配置檔案解析類(如果有)。3,介面資料夾(介面和實現類)。4單

C#程式設計最佳實踐DFS分散式檔案系統

最近在專案中使用到了DFS分散式檔案系統,這裡蒐集一些資料瞭解一下這個系統以及如何在我的專案裡使用。 DFS定義 Microsoft檔案分佈系統 (Dfs) 是一個網路伺服器元件,它能夠使你更容易地在網路上查詢和管理資料。分散式檔案系統是將分佈於不同電腦

Google C++Style GuideC++程式設計風格指南解讀——命名約定

       最重要的一致性規則是命名管理. 命名風格快速獲知名字代表是什麼東東: 型別? 變數? 函式? 常量? 巨集 ... ? 甚至不需要去查詢型別宣告. 我們大腦中的模式匹配引擎可以非常可靠的

C++程式設計基礎- typedef用法詳解

最常見的兩種用法: 用途一: 定義一種型別的別名,而不只是簡單的巨集替換。 比如,可以用來同時宣告指標型的多個物件: char* pa, pb; //這多數不符合我們的意圖,它只聲明瞭一個指向字元變數的指標,和一個字元變數; 以下則可行: typedef char* PCHA

c程式設計語言(第二版)學習20160326

\b 退格 printf("請輸入您的身高:______英寸\b\b\b\b\b\b\b\b\b", ); %e 用法 #include<stdio.h> int main(void) { float a; printf("please input

C++程式設計1.從c走進c++

1.函式指標    (1)基本概念:程式執行期間,每個函式都會佔用一段連續的記憶體空間。而函式名就是該函式所佔記憶體區域的起始位置(也稱入口地址)。我們可以將一個函式的入口地址賦值給一個指標變數,使該指標變數指向該函式。然後通過指標變數就可以呼叫這個函式。這種指向函式的指標被

C++程式設計練習任意給定 n 個有序整數,求這 n 個有序整數序列的最大值,中位數和最小值

題目來源 CCF模擬試題>>小中大>>201903-1 題目描述 老師給了你n個整陣列成的測量資

C++ Primer 第七章 定義數據抽象類

IE color != AS count prime 編號 unit ons Sales_data類 頭文件Sales_data.h /* * 頭文件:Sales_data.h */ #include<iostream> #include

C++ Primer 第七章 C++ Primer 第七章 定義數據抽象類

情況 需要 col const對象 rime size_t t對象 成員 private Screen類 • 我們可以在聲明和定義的地方同時說明inline,但這麽做其實是合法的。不過,最好只在類外部定義的地方說明inline。 可變數據成員 可變數據成員:

C++ Primer 第七章 隱式的類類型轉換

第七章 其中 有效 我們 字符串轉換 出現 轉換 創建 機制 轉換構造函數 轉換構造函數:如果構造函數只接受一個實參,則實際上定義了轉換此類類型的隱式轉換機制,有時我們把這種構造函數稱作轉換構造函數。 能通過一個實參調用的構造函數定義了一條從構造函數的參數類型向類類型隱

C++ Primer 第七章 默認構造函數的作用

ria 不能 ava test 情況 ons nod efault 元素 默認構造函數的作用 1. 默認構造函數 C++ 默認構造函數是對類中的參數提供默認值的構造函數,一般情況下,是一個沒有參數值的空函數,也可以提供一些的默認值的構造函數,如果用戶沒有定義構造函數,

C++ Primer 第16章2. 模板實參推斷

ring strong 一個數 類型轉換 mic sof const對象 mil ++ 模板實參推斷:對於函數模板,編譯器利用調用中的函數實參來確定模板參數,從函數實參來確定模板參數的過程被稱為模板實參推斷。 類型轉換與模板類型參數 與往常一樣,頂層const無論在形

C++ Primer 第15章抽象基類

*** rim ica include margin urn 對象 class mes 抽象基類 【註意】我們也可以為純虛函數提供定義,不過函數體必須在類的外部,也就是說,我們不能再內部為一個=0思網函數提供函數體。 C++中含有(或未覆蓋直接繼承)純虛函數的類是抽象

C++ Primer 第16章《模板與泛型編程》目錄

cnblogs OS pan c++ get In lan microsoft .cn 模板與泛型編程 • 定義模板(16.1) 類模板(16.1.2) 類前置聲明範例 •【C

C++ Primer 第七章《類》目錄

font .html pri 目錄 microsoft www HR AR ont 類 • 類的靜態成員(7.6)【C++ Primer 第七章】《類》目錄

C++ Primer 第15章定義派生類拷貝賦值運算符

運算符 結果 類成員變量 you 輸出 ons c++ prime get pre 學習資料 • 派生類的賦值運算符/賦值構造函數也必須處理它的基類成員的賦值 定義賦值運算符 【註意】對派生類進行拷貝構造時,如果想讓基類的成員也同時拷貝,就一定要在派生類拷貝

MAKEFILE 程式設計基礎之三詳解 MAKEFILE 變數的定義規則使用!

本站文章均為 李華明Himi 原創,轉載務必在明顯處註明: 轉載自【黑米GameDev街區】 原文連結: http://www.himigame.com/gcc-makefile/770.html     使用變數: 在Mak