大家好。 我們正在慢慢地走出陰影,繼續撰寫有關我們產品的系列文章。 後
安裝
讓我們從平庸開始。 該應用程式在三個平台上可用並經過實際測試 - Linux、Windows、MacOS。 您可以從以下位置下載您感興趣的作業系統的安裝程序
實驗場景
我們選擇以下標準場景作為我們的測試對象:
- 登入:用戶-admin,密碼-密碼
- 新增條目
- 讓我們來檢查一下記錄是否有新增正確
我們將測試
建立專案並嘗試未經授權建立實體
首先,讓我們建立一個新專案(文件->新項目)。 如果您是第一次啟動應用程序,則會自動開啟一個新專案。 首先,我們嘗試發出建立新記錄的請求(以防未經授權即可建立記錄)。 從項目節點上下文選單中選擇項目 添加節點 -> 請求步驟。 將節點名稱設定為 建立貼文。 結果,將在樹中建立一個新節點,並且將開啟該節點的標籤。 讓我們設定以下請求參數:
- 請求類型:POST
- 網址:
https://testmace-quick-start.herokuapp.com/posts - 請求正文:帶有值的 json
{"title": "New testmace quick start post"}
如果一切正確,介面將如下所示:
但是,如果我們嘗試滿足請求,伺服器將返回 401 代碼,未經授權我們將無法在此伺服器上獲得任何內容。 嗯,總的來說,正如預期的那樣)。
新增授權請求
如同已經說過的,我們有一個 POST 端點 /login
,它將 json 作為以下形式的請求正文: {"username": "<username>", "password": "<password>"}
哪裡 username
и password
(再次,來自上面的介紹段落)有含義 admin
и password
分別。 作為回應,此端點傳回 json,例如 {"token": "<token>"}
。 我們將使用它來進行授權。 讓我們來創建 請求步驟 帶名稱的節點 登錄,將充當祖先 專案 節點使用拖放操作,將樹中的給定節點移動到高於該節點的位置 建立貼文。 讓我們為新建立的請求設定以下參數:
- 請求類型:POST
- 網址:
https://testmace-quick-start.herokuapp.com/login - 請求正文:帶有值的 json
{"username": "admin", "password": "password"}
讓我們執行請求並接收回應中帶有令牌的第二百個代碼。 像這樣的東西:
重構:刪除網域重複
到目前為止,請求尚未連結到單一腳本。 但這並不是唯一的缺點。 如果仔細觀察,您會發現至少兩個請求中的網域都是重複的。 不好。 是時候重構未來腳本的這一部分了,變數將幫助我們做到這一點。
初步估計,變數與其他類似工具和程式語言中的作用相同——消除重複、增加可讀性等。 您可以閱讀有關變量的更多信息
讓我們在專案節點層級定義一個變數 domain
有意義 https://testmace-quick-start.herokuapp.com
。 為此,有必要
- 開啟包含此節點的選項卡,然後點擊右上角的計算器圖標
- 點選 + 新增變數
- 輸入變數名稱和值
在我們的例子中,新增了變數的對話框將如下所示:
好的。 現在,由於繼承,我們可以在任何嵌套層級的後代中使用此變數。 在我們的例子中,這些是節點 登錄 и 建立貼文。 為了在文字欄位中使用變量,您需要編寫 ${<variable_name>}
。 例如,登入網址轉換為 ${domain}/login
,分別為 建立貼文 節點 url 看起來像 ${domain}/posts
.
因此,在 DRY 原則的指導下,我們稍微改進了場景。
將令牌保存到變數中
既然我們正在討論變量,那麼讓我們稍微擴展一下這個主題。 目前,如果登入成功,我們會從伺服器收到一個授權令牌,在後續請求中將需要該令牌。 讓我們將此標記保存到變數中。 因為變數的值將在腳本執行期間確定,我們為此使用特殊的機制 -
首先,讓我們執行登入請求。 在選項卡中 已解析 答案,將遊標移到標記上,然後在上下文選單中(使用滑鼠右鍵或按一下按鈕...呼叫)選擇項目 分配給變量。 將出現一個對話框,其中包含以下欄位:
- 途徑 — 採用答案的哪一部分(在我們的例子中是
body.token
) - 當前值 — 路徑上有什麼值(在我們的例子中,這是令牌值)
- 變量名 — 變數名稱,其中 當前值 將被保留。 在我們的例子中它將是
token
- 節點 — 將在哪個祖先中建立變量 變量名。 我們選擇項目
完成的對話框如下所示:
現在每次執行節點時 登錄 動態變數 token
將使用回應中的新值進行更新。 這個變數將會被儲存在 專案 節點,並且由於繼承,將可供後代使用。
要存取動態變量,您必須使用 $dynamicVar
。 例如,要存取儲存的令牌,您需要調用 ${$dynamicVar.token}
.
我們將授權令牌傳遞到請求中
在前面的步驟中,我們收到了授權令牌,我們需要做的就是添加一個標頭 Authorization
有意義 Bearer <tokenValue>
在所有需要授權的請求中,包括 建立貼文。 做這件事有很多方法:
使用第二種方法似乎很明顯,但在本文的上下文中,這種方法......無趣。 嗯,真的:授權機制加減是您在其他工具中熟悉的(即使我們有類似的東西)
另一件事是預設標題! 簡而言之,預設標頭是繼承的 HTTP 標頭,除非明確停用,否則預設會將其新增至請求中。 例如,使用此功能,您可以實現自訂授權或簡單地消除腳本中的重複。 讓我們使用此功能在標頭中傳遞令牌。
之前,我們謹慎地將令牌保存到動態變數中 $dynamicVar.token
在專案節點層級。 剩下的就是執行以下操作:
- 定義預設標題
Authorization
有意義Bearer ${$dynamicVar.token}
在專案節點層級。 為此,在節點的項目介面中,您需要打開一個帶有預設標題的對話框(按鈕 頭 右上角)並添加相應的標題。 包含填充值的對話方塊將如下所示:
- 從登入請求中停用此標頭。 這是可以理解的:在登入時,我們還沒有令牌,我們將透過此請求安裝它。 因此,在tab中請求的登入介面 頭 的區域中 遺傳 取消選取授權標頭。
就這樣。 現在,授權標頭將會新增至專案節點子層級的所有請求(登入節點除外)。 事實證明,在這個階段我們已經準備好了一個腳本,我們所要做的就是啟動它。 您可以透過選擇來運行腳本 跑 在專案節點的上下文功能表中。
檢查帖子創建的正確性
在此階段,我們的腳本可以登入並使用授權令牌建立貼文。 但是,我們需要確保新建立的貼文具有正確的名稱。 也就是說,本質上,剩下的就是執行以下操作:
- 透過 id 發送接收貼文的請求,
- 檢查從伺服器收到的名稱是否與建立貼文時發送的名稱相符
讓我們看看第一步。 由於 id 值是在腳本執行期間確定的,因此您需要建立一個動態變數(我們稱之為 postId
) 從節點 建立貼文 在專案節點層級。 我們已經知道如何做到這一點,只需參考 部分 將令牌保存到變數中。 剩下的就是建立一個使用此 ID 接收貼文的請求。 為此,我們建立一個 RequestStep 取得貼文 具有以下參數:
- 請求類型:GET
- 網址:${domain}/posts/${$dynamicVar.postId}
為了實現第二步,我們需要熟悉 Compare
帶有運算符的斷言 equal
。 有多種方法可以創建斷言:
- 長的。 從 RequestStep 節點的上下文功能表手動建立 Assertion 節點。 在創建的斷言節點中,添加感興趣的斷言並填寫字段。
- 快速地。 使用上下文選單建立一個斷言節點以及來自 RequestStep 節點回應的斷言
我們使用第二種方法。 這就是我們案例的樣子。
對於那些不明白的人,這是發生的事情:
- 在節點中發起請求 取得貼文
- 在選項卡中 已解析 回答,調用上下文選單並選擇 創建斷言 -> 比較 -> 等於
恭喜,我們已經創建了第一個測試! 很簡單,不是嗎? 現在您可以完全運行該腳本並享受結果。 剩下的就是稍微重構一下並將其取出 title
到一個單獨的變數。 但我們會把這個當作作業留給你)
結論
在本指南中,我們創建了一個完整的場景,同時回顧了我們產品的一些功能。 當然,我們並沒有使用所有功能,在接下來的文章中我們將詳細概述 TestMace 的功能。 敬請關注!
PS 對於那些懶得重現所有步驟的人,我們已經記錄下來
來源: www.habr.com