如何使用 Python 和 JavaScript 測試 API

如何使用 Python 和 JavaScript 測試 API

在選擇應用程序編程接口 (API) 和決定是否可以使用它之間只有一線之隔。大多數 REST API 具有通用架構并線程化公共請求路徑。但是有些 API 偏離了標準。因此,它們變得難以使用。

因此,在 API 上構建整個軟件之前,您需要執行質量檢查並確保其正常工作。那麼什麼是 API 測試,您如何測試 API?

什麼是 API 測試?

API 測試涉及對 API 的功能、安全性、可擴展性、速度等進行初步評估,以確定它是否適合想要使用它的程序。但從表面上看,當您通過其各種端點發出請求時,它可能涉及測試以查看它是否發送了適當的響應。

根據其結構,在測試 API 時,您將向其相關端點發出請求(獲取、發布、更新或刪除)。在 API 測試期間有許多指標需要檢查。但在初學者級別,您希望通過 API 的狀態代碼驗證 API 的完整性,並確保它獲取並接受正確的數據。

為此,與任何 Web 請求一樣,API 可能會返回 200、400 或 500 狀態代碼,甚至其他。

大多數 API 使用 JSON 響應來提供其有效負載。根據目標,其他人可能會接受並響應 XML、多部分或 HTML 有效負載。

如何使用 Python 和 JavaScript 測試 API

儘管 Internet 上有許多圖形用戶界面 (GUI) API 測試工具,但您可以使用編寫的腳本更嚴格地評估 API。

API 在其文檔中說明它允許的請求類型並為它們提供相關的端點。因此,您可以使用適當的請求方法獲取和測試它們。

相關:什麼是 REST API 以及如何為您的應用程序或網站獲取數據?

與實際生產階段不同,API 測試很粗糙。因此,在為生產運行 API 時,您不需要那麼多的特異性。儘管有不同類型的 API 測試,但我們將在本文中更多地關注響應驗證測試。

在本教程中,我們將使用 JavaScript 的fetch和 Python 的requests庫來測試假商店 API。在執行此操作時,我們將測試用於獲取、發布、更新和刪除數據的端點。

如何使用 JavaScript 測試 Get API 端點

就像在生產中使用它一樣,您可以使用Axiosfetch方法在 JavaScript 中測試 API 。

要使用fetch從 API獲取響應狀態:

fetch('https://fakestoreapi.com/products', ).then(res =>{ console.log(res) })

如果上述請求是有效響應,則返回 200 狀態。成功發出請求後,您就可以從 API 請求實時數據。

讓我們從這個 API 獲取數據:

fetch('https://fakestoreapi.com/products', ).then(res =>{ if (res.ok){ return res.json() } }).then(response=>{ console.log(response) }).catch(err => console.log(err))

對上述 fetch 代碼的響應如下所示:

如何使用 Python 和 JavaScript 測試 API

例如,要獲取所有產品的價格,您可以使用map函數:

fetch('https://fakestoreapi.com/products', ).then(res =>{ if (res.ok){ return res.json() } }).then(response=>{ response.map(data =>{ console.log(data.price) }) // console.log(response) }).catch(err => console.log(err))

以上記錄了以下輸出:

如何使用 Python 和 JavaScript 測試 API

使用 Python 測試 Get 端點

如前所述,Python 還使用請求庫來訪問 API 的數據。

在這種情況下檢查響應的狀態:

import requests data = requests.get('https://fakestoreapi.com/products') print(data.status_code)

像我們上面所做的那樣記錄數據會返回相應的狀態。不過,在這種情況下是 200。

現在讓我們使用 Python 獲取與使用 JavaScript 時相同的數據:

import requests data = requests.get('https://fakestoreapi.com/products') myData = data.json() print(myData)

上面的結果如下所示:

如何使用 Python 和 JavaScript 測試 API

您可以使用 for 循環獲取特定數據。

要獲取產品價格,例如:

import requests data = requests.get('https://fakestoreapi.com/products') myData = data.json() indexes = 0 for i in myData: goods = myData[indexes] indexes +=1 print(goods["price"])

輸出如下所示:

如何使用 Python 和 JavaScript 測試 API

使用 JavaScript 測試後端點

在測試並查看Get請求是否有效後,根據您的目標和 API 提供的內容,您可能還想檢查是否可以將數據插入其中。

與發出Get請求的方式不同,Post請求接受有效負載。另外,您需要指定它是一個 Post 請求:

// Specify the payload let payload = { title: 'new product', price: 13.5, description: 'test description', image: '', category: 'electronic' } fetch('https://fakestoreapi.com/products', { method: "Post", headers:{ 'Content-Type': 'application/json' }, body: JSON.stringify(payload) //convert the payload to JSON } ).then(res =>{ if (res.ok){ console.log(res.status) return res.json() } }).then(response => { console.log(response) }).catch(err => console.log(err))

上面的代碼記錄了響應狀態代碼和運行時插入的新信息。這會告訴您您的請求是否通過。通常,如果狀態代碼為 200,則您的 API 具有返回適當響應的有效端點。

使用 Python 測試發布請求

您還可以使用 Python 的requests.post測試 API 的 post 端點。正如您在使用 JavaScript 的fetch 時所做的那樣,您還需要在此處指定有效負載:

import requests payload = { 'title': 'new product', 'price': 13.5, 'description': 'test description', 'image': '', 'category': 'electronic' } Posted = requests.post('https://fakestoreapi.com/products', data = payload ) print(Posted.status_code) print(Posted.json())

與 JavaScript 一樣,上面的 Python 代碼也記錄了響應狀態代碼和有效載荷中指定的新數據。

測試 Put 端點

更新 API 數據的過程與以兩種語言發布和獲取它們的過程相同。

要使用 JavaScript 的fetch執行此操作,您只需要將Post替換為Put

// Specify the payload let payload = { title: 'new product', price: 13.5, description: 'test description', image: '', category: 'electronic' } fetch('https://fakestoreapi.com/products/19', { method: "Put", headers:{ 'Content-Type': 'application/json' }, body: JSON.stringify(payload) //convert the payload into JSON } ).then(res =>{ if (res.ok){ console.log(res.status) return res.json() } }).then(response => { console.log(response) }).catch(err => console.log(err))

如果您注意 API 端點,您會看到這次它包含產品 ID。這就是 API 知道在這種情況下您要更新哪些數據的方式。

儘管如此,一些 API 可能會使用其他方法來製作它們的端點。所以這不是一個標準。

要使用 Python 測試 API 數據更新,請改用requests.put

import requests payload = { 'title': 'new product', 'price': 13.5, 'description': 'test description', 'image': '', 'category': 'electronic' } Posted = requests.put('https://fakestoreapi.com/products/19', data = payload ) print(Posted.status_code) print(Posted.json())

以上示例,如果成功,將新數據插入 API 端點指示的位置 19。

測試刪除請求

從 API 中刪除數據就像發出 Get 請求一樣簡單。這是因為,與 Post 和 Put 不同,您不需要指定任何有效負載。您所需要的只是刪除端點。

我們在此處選擇的 API 使用產品 ID 來跟踪其數據。因此,刪除產品很容易:

fetch('https://fakestoreapi.com/products/19', { method: "Delete", headers:{ 'Content-Type': 'application/json' } } ).then(res =>{ if (res.ok){ console.log(res.status) return res.json() } }).then(response => { console.log(response) }).catch(err => console.log(err))

您只需要幾行代碼即可使用 Python 實現相同的功能:

import requests Posted = requests.delete('https://fakestoreapi.com/products/19', ) print(Posted.status_code) print(Posted.json())

上面的兩個示例都記錄了響應狀態代碼和屬於查詢 id 的數據(在本例中為 19)。

這些測試方法是通用的嗎?

雖然我們在這篇文章中只關註一個 API,但在處理其他 API 時,用於測試 CRUD 端點的方法並沒有什麼不同。當然,唯一的區別可能在於圍繞每個 API 結構的規則和用於請求數據的指南。一旦您為選定的 API 解密了這些,您就可以使用適當的方法(如此處所述)來測試其相應的端點。

因此,由於每個 API 都有連接到它的規則,因此在測試時,某些 API 可能會提供額外的參數供您包含在請求標頭中。此類參數通常包括訪問令牌或文檔中提供的其他參數。


如何使用 Python 作為命令行計算器

如何使用 Python 作為命令行計算器

雖然您可以在計算機上使用圖形計算器,但 Python 編程語言解釋器可以兼作桌面計算器。它在 Python 社區中非常流行,以至於官方教程中都提到了它。下面介紹如何將 Python 用作計算器。

面向程序員的 8 個最佳 Java 博客

面向程序員的 8 個最佳 Java 博客

作為程序員,你應該接受挑戰才能生存,並在開發或編程領域創造一些奇蹟。因此,如果您正在尋求學習高級編程語言以提高您的職業技能,Java 是最好的前景之一。

初學者開始使用 Python 的 7 個重要命令

初學者開始使用 Python 的 7 個重要命令

如果您有一個全面的路線圖,詳細說明初學者應學習哪些概念以及如何進一步進步以達到下一個里程碑,那麼學習 Python 等新編程語言將變得輕而易舉。即使是中級程序員也應該經常複習他們的基礎知識,為自己打下堅實的基礎。

響應式網頁設計原則

響應式網頁設計原則

如今,構建一個根據瀏覽器或設備調整其用戶界面的網站或應用程序是一種常見的做法。有兩種方法可以實現這一目標。第一個涉及為不同的設備創建不同版本的網站或應用程序。但它效率低下,並可能導致不可預測的錯誤。

如何使用 C++、Python 和 JavaScript 計算數字中的位數

如何使用 C++、Python 和 JavaScript 計算數字中的位數

處理數字是編程的一個組成部分。每種編程語言都支持以多種不同方式操作數字。在本文中,您將學習如何使用迭代、基於日誌和基於字符串的方法查找整數中的總位數。

用於容器管理的 9 個最佳 Docker 替代方案

用於容器管理的 9 個最佳 Docker 替代方案

容器對於虛擬環境中的軟件開發、部署和管理非常有益。Docker 在容器化過程中很有用,但它不是唯一的平台。如果您正在尋找 Docker 的替代品,那就別無所求。此列表展示了一些功能豐富且高效的 Docker 替代方案,可用於您的下一個項目。

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

如何在您的 WordPress 帖子中嵌入推文

如何在您的 WordPress 帖子中嵌入推文

在您的 WordPress 帖子中嵌入第三方服務是一種吸引訪問者興趣的令人興奮的方式。嵌入的內容還提供了使掃描更容易的視覺提示。WordPress 使添加此類內容變得容易。

如何使用 npkill 刪除節點模塊文件夾

如何使用 npkill 刪除節點模塊文件夾

Node.js 是一個 JavaScript 運行時環境,允許您在 Web 瀏覽器之外運行 JavaScript,使其成為開發各種應用程序的流行選擇。它的流行部分是由於大量的 NPM 包可以簡化開發人員的體驗。

如何編寫和編譯你的第一個 Solidity 代碼

如何編寫和編譯你的第一個 Solidity 代碼

Solidity 是以太坊區塊鏈上智能合約使用的編程語言。它是一種靜態類型的、面向對象的編程語言。

前 5 大徽章將增強您的 GitHub 存儲庫

前 5 大徽章將增強您的 GitHub 存儲庫

GitHub 徽章可以通過為用戶提供一種快速的方法來捕獲存儲庫指標來提高存儲庫的可讀性。徽章可以嵌入到您的 README.md 中,以向其他開發人員闡明您的項目的重要性和必要性。因此,讀者可以通過檢查附加的徽章快速了解存儲庫。

什麼是國際程序員節?今年的 3 種慶祝方式

什麼是國際程序員節?今年的 3 種慶祝方式

國際慶祝日是對社會事務、歷史日子和各自職業給予認可的好方法。國際程序員日慶祝程序員在改善日常生活方面所發揮的作用。我們生活的文明世界是程序員辛勤工作的產物。

Python String format() 方法如何工作?10個例子

Python String format() 方法如何工作?10個例子

無論是數據庫查詢還是數學運算的結果,Python 字符串格式方法都提供了一種更加動態和吸引人的方式來向用戶呈現結果。

Visual Studio 2022 與 2019:您現在應該升級嗎?解釋

Visual Studio 2022 與 2019:您現在應該升級嗎?解釋

今年早些時候,微軟向狂野的編程世界發布了 Visual Studio 2022 的預覽版。這是個好消息!這是一個非常受歡迎的 IDE,但考慮到它蓬勃發展的 DevOps 生態系統的變化速度,它需要進行調整甚至大修。

軟件度量的簡單介紹

軟件度量的簡單介紹

軟件度量是用於量化軟件各個方面的度量。這些方面可以包括開發團隊的成本、質量和效率。

如何在 Windows 10 上安裝 .NET Framework 3.5 版

如何在 Windows 10 上安裝 .NET Framework 3.5 版

作為 Windows 用戶,您可能至少遇到過 .NET Framework 這個詞。它是 Microsoft 開發的軟件框架,可讓您構建和運行 C#、C++、F# 和 Visual Basic 程序。最新的 .NET 版本是 4.8,但您的計算機可能需要舊版本的 .NET(如 .NET 3.5)才能運行某些應用程序。

Flask 或 CherryPy:您應該使用哪種 Python 框架?

Flask 或 CherryPy:您應該使用哪種 Python 框架?

如果您是 Python 開發人員,您可以從一系列可用的框架中受益匪淺。雖然有些框架最適合大型生態系統,但其他框架則專門服務於特定的發展目標。繼續閱讀以了解兩個 Python 框架 Flask 和 CherryPy 之間的基本特性、用法和區別。

如何使用 Python、C++ 和 JavaScript 查找 N 位完美立方體和正方形

如何使用 Python、C++ 和 JavaScript 查找 N 位完美立方體和正方形

許多程序員喜歡使用代碼解決棘手的數學問題。它有助於提高頭腦和提高解決問題的能力。在本文中,您將學習如何使用 Python、C++ 和 JavaScript 找到最小和最大的 n 位完美正方形和立方體。每個示例還包含幾個不同值的示例輸出。

如何將 Python 添加到 Windows PATH 變量

如何將 Python 添加到 Windows PATH 變量

從終端運行 Python 通常是不可避免的。但是,如果您是第一次在 Windows 10 上安裝 Python,則只有將其添加到 Windows PATH 環境變量中,才能通過 Windows 終端運行它。

如何使用 Python if 語句

如何使用 Python if 語句

if 語句是邏輯編程的驅動力。因此,更好地掌握 Python 是對 Python 編程技能的重要補充。

如何使用 Python 作為命令行計算器

如何使用 Python 作為命令行計算器

雖然您可以在計算機上使用圖形計算器,但 Python 編程語言解釋器可以兼作桌面計算器。它在 Python 社區中非常流行,以至於官方教程中都提到了它。下面介紹如何將 Python 用作計算器。

面向程序員的 8 個最佳 Java 博客

面向程序員的 8 個最佳 Java 博客

作為程序員,你應該接受挑戰才能生存,並在開發或編程領域創造一些奇蹟。因此,如果您正在尋求學習高級編程語言以提高您的職業技能,Java 是最好的前景之一。

初學者開始使用 Python 的 7 個重要命令

初學者開始使用 Python 的 7 個重要命令

如果您有一個全面的路線圖,詳細說明初學者應學習哪些概念以及如何進一步進步以達到下一個里程碑,那麼學習 Python 等新編程語言將變得輕而易舉。即使是中級程序員也應該經常複習他們的基礎知識,為自己打下堅實的基礎。

響應式網頁設計原則

響應式網頁設計原則

如今,構建一個根據瀏覽器或設備調整其用戶界面的網站或應用程序是一種常見的做法。有兩種方法可以實現這一目標。第一個涉及為不同的設備創建不同版本的網站或應用程序。但它效率低下,並可能導致不可預測的錯誤。

如何使用 C++、Python 和 JavaScript 計算數字中的位數

如何使用 C++、Python 和 JavaScript 計算數字中的位數

處理數字是編程的一個組成部分。每種編程語言都支持以多種不同方式操作數字。在本文中,您將學習如何使用迭代、基於日誌和基於字符串的方法查找整數中的總位數。

用於容器管理的 9 個最佳 Docker 替代方案

用於容器管理的 9 個最佳 Docker 替代方案

容器對於虛擬環境中的軟件開發、部署和管理非常有益。Docker 在容器化過程中很有用,但它不是唯一的平台。如果您正在尋找 Docker 的替代品,那就別無所求。此列表展示了一些功能豐富且高效的 Docker 替代方案,可用於您的下一個項目。

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

如何在您的 WordPress 帖子中嵌入推文

如何在您的 WordPress 帖子中嵌入推文

在您的 WordPress 帖子中嵌入第三方服務是一種吸引訪問者興趣的令人興奮的方式。嵌入的內容還提供了使掃描更容易的視覺提示。WordPress 使添加此類內容變得容易。

如何使用 npkill 刪除節點模塊文件夾

如何使用 npkill 刪除節點模塊文件夾

Node.js 是一個 JavaScript 運行時環境,允許您在 Web 瀏覽器之外運行 JavaScript,使其成為開發各種應用程序的流行選擇。它的流行部分是由於大量的 NPM 包可以簡化開發人員的體驗。

如何編寫和編譯你的第一個 Solidity 代碼

如何編寫和編譯你的第一個 Solidity 代碼

Solidity 是以太坊區塊鏈上智能合約使用的編程語言。它是一種靜態類型的、面向對象的編程語言。