如何使用Docker容器和Postman測試您的應(yīng)用程序
我們將測試使用 Node.js、Express 和 Postgres 創(chuàng)建的簡單 CRUD 應(yīng)用程序。
在這個例子中,我們將使用:
Postman:測試我們的API。
Newman:運(yùn)行我們的 Postman 系列。
玩轉(zhuǎn) Docker:部署我們的應(yīng)用程序。
Docker:運(yùn)行我們的應(yīng)用程序。
分步程序
介紹
克隆存儲庫并修改 docker-compose.yml 文件
在本地運(yùn)行和測試應(yīng)用程序
部署我們的應(yīng)用程序。
創(chuàng)建并導(dǎo)出 Postman 集合
使用容器測試應(yīng)用程序
結(jié)論
(更|多優(yōu)質(zhì)內(nèi)|容:java567 點(diǎn) c0m)
0.??簡介
我們將使用 Docker 和 Postman:
Docker:運(yùn)行我們的應(yīng)用程序。
郵遞員:測試一下。
?????郵遞員
Postman 是一個流行的協(xié)作平臺和 API(應(yīng)用程序編程接口)客戶端,允許開發(fā)人員設(shè)計、測試和記錄 API。它提供了一個用戶友好的界面,使用戶能夠請求 API 并檢查響應(yīng)并創(chuàng)建和管理 API 的自動化測試。
此外,Postman 允許團(tuán)隊共享請求集合并協(xié)作進(jìn)行 API 開發(fā)和測試。
Postman 非???,但我們將在本文中通過將它與 Docker 一起使用來使其更加令人難以置信。
?? 碼頭工人
Docker 是一個容器化平臺,允許開發(fā)人員將應(yīng)用程序及其依賴項打包到稱為容器的獨(dú)立單元中。
容器彼此隔離,并與底層主機(jī)系統(tǒng)隔離,使它們具有可移植性,并且易于跨不同環(huán)境部署。Docker 提供了一種簡單且一致的方式來構(gòu)建、分發(fā)和運(yùn)行應(yīng)用程序,這有助于簡化開發(fā)過程并減少設(shè)置和管理復(fù)雜應(yīng)用程序架構(gòu)所需的時間和精力。
在本文中,我們將使用 docker 來運(yùn)行我們的應(yīng)用程序并使用 Postman 測試應(yīng)用程序。
1. ?? 克隆存儲庫
我們將使用我在另一個視頻中創(chuàng)建的 JavaScript 項目。它是一個使用 Node.js、Express 和 Postgres 的簡單 CRUD 應(yīng)用程序。
?git clone https://github.com/FrancescoXX/crud-node-live.git
現(xiàn)在進(jìn)入存儲庫
?cd crud-node-live
然后用你最喜歡的 IDE 打開這個文件夾。我正在使用 VSCode。
?code .
修改 docker-compose.yml 文件。
要測試此應(yīng)用程序,您可以構(gòu)建自己的映像或使用我創(chuàng)建并推送到 Dockerhub 的映像。
要使用我的,請刪除build第 6 行的指令,因為我們將使用來自 Dockerhub 的現(xiàn)有圖像
這是最終的docker-compose.yml文件(注意沒有build說明)
?version: "3.9"
?
?services:
? ?node_app:
? ? ?container_name: node_app
? ? ?image: francescoxx/node_live_app
? ? ?ports:
? ? ? ?- "3000:3000"
? ? ?environment:
? ? ? ?- PG_DB=node_live_db
? ? ? ?- PG_USER=francesco
? ? ? ?- PG_PASSWORD=12345
? ? ? ?- PG_HOST=node_db
? ? ?depends_on:
? ? ? ?- node_db
?
? ?node_db:
? ? ?container_name: node_db
? ? ?image: postgres:12
? ? ?ports:
? ? ? ?- "5432:5432"
? ? ?environment:
? ? ? ?- POSTGRES_DB=node_live_db
? ? ? ?- POSTGRES_USER=francesco
? ? ? ?- POSTGRES_PASSWORD=12345
? ? ?volumes:
? ? ? ?- node_db_data:/var/lib/postgresql/data
?
?volumes:
? ?node_db_data: {}
2. ?? 在本地運(yùn)行和測試應(yīng)用程序
在本地運(yùn)行應(yīng)用程序
讓我們在本地運(yùn)行這兩個 Docker 服務(wù)(容器)。
運(yùn)行 Postgres 容器:
?docker compose up -d node_db
運(yùn)行節(jié)點(diǎn)應(yīng)用程序:
?docker compose up -d node_app
并檢查它們是否都已啟動并正在運(yùn)行:
?docker ps -a
輸出應(yīng)與此類似:
在本地測試應(yīng)用程序
在此示例中,我們將僅測試兩個端點(diǎn):
使用 Postman,我們可以GET向localhost:3000
我們可以GET請求localhost:3000/users
我們沒有任何用戶,所以我們得到一個空數(shù)組。
現(xiàn)在我們已準(zhǔn)備好部署此服務(wù)并使用容器對其進(jìn)行測試。
3. ?? 部署應(yīng)用
您可以使用任何容器服務(wù),例如 AWS、Azure 或 Google Cloud 平臺。
重要的部分是要有一個最終的公共 IP 地址,以便使用 Postman 對其進(jìn)行測試。
我將使用免費(fèi)且易于使用的 Play with Docker。
玩轉(zhuǎn) Docker
訪問此鏈接: https: //labs.play-with-docker.com/并單擊Start
這將創(chuàng)建一個 4 小時的會話,您可以在其中創(chuàng)建和測試您的容器。
點(diǎn)擊+ Add new instance
在右側(cè),您應(yīng)該會看到一個終端和實(shí)例。這個實(shí)例有一個公共地址。
部署應(yīng)用程序
部署應(yīng)用程序非常容易。
我們需要復(fù)制 docker-compose.yml 文件并將其粘貼到操場上。
您可以使用 ssh 執(zhí)行此操作,也可以將文件拖放到 playground 上。
通過鍵入檢查 docker-compose 文件是否存在
?ls
現(xiàn)在讓我們運(yùn)行我們之前在本地運(yùn)行的相同的兩個命令:
?docker compose up -d node_db
?docker compose up -d node_app
讓我們檢查一下
?docker ps -a
請注意,現(xiàn)在有 2 個端口打開:3000和5432
如果單擊3000旁邊的OPEN PORT,您應(yīng)該會看到應(yīng)用程序在公共 IP 上運(yùn)行(如果您使用任何云提供商,請檢查公共 IP)
讓我們舉個例子
4. ???郵差收藏
打開 Postman,如果您還沒有創(chuàng)建一個新的公共空間,可以隨意命名。
就我而言,我創(chuàng)建了一個名為public-francesco
現(xiàn)在通過單擊創(chuàng)建一個新集合Create Collection
重命名為postman-docker
GET request在應(yīng)用程序的公共 IP 地址添加一個新的,SAVE它(右上角)
復(fù)制它(右鍵單擊第一個請求)并命名新的Get All Users
這個請求將是一個GET request to <public-server-ip>:/users
??記得保存要求
您可以通過直接在 Postman 中運(yùn)行來測試此 Collection:
我們現(xiàn)在準(zhǔn)備導(dǎo)出這個集合并使用容器對其進(jìn)行測試
6. ?? 使用容器測試應(yīng)用程序
我們將使用 Newman,它是 Postman 的命令行收集運(yùn)行程序。它允許您直接從命令行運(yùn)行和測試 Postman 集合。它在構(gòu)建時考慮了可擴(kuò)展性,因此您可以輕松地將它與您的持續(xù)集成服務(wù)器和構(gòu)建系統(tǒng)集成。
導(dǎo)出 Postman 集合
現(xiàn)在將此集合導(dǎo)出為 JSON 文件。您可以通過單擊集合名稱右側(cè)的三個點(diǎn),然后單擊Export
另存為node-collection(無擴(kuò)展名)
現(xiàn)在是時候運(yùn)行這個集合了。
使用 Newman 運(yùn)行 Postman Collection
?? 對于 Windows 用戶:使用命令提示符或 Powershell
導(dǎo)航到文件node-collection所在的文件夾
并運(yùn)行此命令:
?docker run -v <postman-collection-path>:/etc/newman -t postman/newman run node-collection
替換<postman-collection-path>為文件所在文件夾的路徑node-collection。
就我而言,它是/c/workspace/postman-collection-test
您將獲得請求列表。
7.??結(jié)論
我們做到了!我們使用以下方法測試了該應(yīng)用程序:
郵遞員集合
新人
碼頭工人