在Pycharm中搭建Pytest接口自動化測試框架

前言

???????本期是我們《保姆級Pytest接口自動化測試框架實戰(zhàn)指南》系列中的核心功能,Pytest框架串聯(lián)了整個自動化測試框架始終。
???????隨著軟件的不斷復(fù)雜化,手動測試已經(jīng)無法滿足快速迭代和高質(zhì)量的要求。所以自動化測試框架變得越來越重要,特別是Pytest,一個出色的Python單元測試框架。
???????本文將教你如何在Pycharm中使用Pytest框架進行接口自動化測試,主要分為以下幾個部分:

  1. 環(huán)境準(zhǔn)備
  2. 安裝必要的插件
  3. 安裝必要的插件
  4. 運行測試用例和報告生成

1. 環(huán)境準(zhǔn)備

在開始之前,需要確保你掌握以下技術(shù):

  • Python 3.x
  • Pycharm IDE

除了Pycharm,還可以使用一些其他的編輯器用于編寫代碼:

  • Pycharm
  • VS Code
  • Sublime Text
  • Atom

2. 安裝必要的插件

2.1 Pytest

???????Pytest是一個功能強大且可擴展的Python測試框架,可以用于編寫各種類型的測試用例。相比其他測試框架,Pytest具有以下優(yōu)點:

  • 簡單易學(xué):使用簡單而直觀的API,易于入門。
  • 自動化發(fā)現(xiàn)測試用例:Pytest可以自動發(fā)現(xiàn)測試用例并執(zhí)行,無需手動管理測試套件。
  • 參數(shù)化測試:Pytest可以輕松地使用參數(shù)化的方式運行測試用例,從而減少冗余代碼。
  • 斷言支持:Pytest可以使用Python的assert語句進行斷言,無需學(xué)習(xí)新的API。
  • 多個插件擴展:Pytest擁有眾多擴展插件,可以滿足各種測試需求。

安裝pytest插件的步驟如下:

1.打開Pycharm IDE。
2.點擊“文件” -> “設(shè)置”,在左側(cè)面板中選擇“插件”。
3.在搜索框中輸入“pytest”,然后點擊“安裝”按鈕即可。

2.2 Pytest-html

???????Pytest-html插件可以將Pytest測試結(jié)果以HTML格式呈現(xiàn),使得測試報告更加美觀易讀。安裝pytest-html插件的步驟如下:

1.打開Pycharm IDE。
2.點擊“文件” -> “設(shè)置”,在左側(cè)面板中選擇“插件”。
3.在搜索框中輸入“pytest-html”,然后點擊“安裝”按鈕即可。

3. 編寫測試用例

3.1 測試用例文件結(jié)構(gòu)

???????在編寫測試用例之前,我們需要了解測試用例文件應(yīng)該包括哪些內(nèi)容。測試用例文件應(yīng)包括以下三個部分:

3.1.1 導(dǎo)入庫

???????測試用例應(yīng)該開始于導(dǎo)入所需的Python庫。

import requests
import json

3.1.2 定義測試函數(shù)

???????測試用例文件應(yīng)包括一個或多個測試函數(shù)。每個測試函數(shù)應(yīng)以"test_"開頭,并包含所需的斷言語句。例如:

def test_response_code():
    url = "http://localhost:8080/posts/1"
    response = requests.get(url)
    assert response.status_code == 200
其中,函數(shù)名稱應(yīng)該遵循以下規(guī)則:
  • 函數(shù)名稱應(yīng)該清晰明了,能夠表達(dá)被測試的功能或特性。
  • 函數(shù)名稱應(yīng)該以“test_”開頭,這是Pytest自動識別測試用例的規(guī)則。
  • 函數(shù)名稱可以使用下劃線分隔單詞。

???????在上述代碼中,url應(yīng)該被替換為你要測試的接口URL地址。

3.1.3 定義測試用例

???????測試用例文件應(yīng)包括一個或多個測試函數(shù)。每個測試函數(shù)應(yīng)以"test_"開頭,并包含所需的斷言語句。例如:

def test_response_code():
    url = "http://localhost:8080/posts/1"
    response = requests.get(url)
    assert response.status_code == 200
其中,函數(shù)名稱應(yīng)該遵循以下規(guī)則:
  • 函數(shù)名稱應(yīng)該清晰明了,能夠表達(dá)被測試的功能或特性。
  • 函數(shù)名稱應(yīng)該以“test_”開頭,這是Pytest自動識別測試用例的規(guī)則。
  • 函數(shù)名稱可以使用下劃線分隔單詞。

???????在上述代碼中,url應(yīng)該被替換為你要測試的接口URL地址。

3.2 編寫測試用例

???????在編寫測試用例時,我們需要遵循以下規(guī)則:

3.2.1 函數(shù)名稱

???????測試函數(shù)應(yīng)該以“test_”開頭,這是Pytest自動識別測試用例的規(guī)則。例如:

def test_response_code():
    ...

3.2.2 斷言語句

???????每個測試函數(shù)應(yīng)包含所需的斷言語句,用于驗證接口返回值是否符合預(yù)期。例如:

assert response.status_code == 200

3.2.3 文件名稱

???????測試用例文件的命名應(yīng)該以“test_”開頭,以“_test.py”結(jié)尾。例如,“test_example.py”是一個有效的文件名。

3.2.4 用例名稱

???????每個測試函數(shù)應(yīng)該具有一個描述性的名稱,可以使用下劃線分隔單詞。例如:

def test_response_code():
    ...

def test_response_content():
    ...

3.3 示例代碼

???????在Pycharm中創(chuàng)建一個新文件,并編寫測試用例代碼。以下是一個簡單的示例:

import requests
import json

def test_response_code():
    url = "http://localhost:8080/posts/1"
    response = requests.get(url)
    assert response.status_code == 200

def test_response_data():
    url = "http://localhost:8080/posts/1"
    response = requests.get(url)
    data = response.json()
    assert data["title"] == "sunt aut facere repellat provident occaecati excepturi optio reprehenderit"

def test_create_post():
    url = "http://localhost:8080/posts"
    headers = {'Content-Type': 'application/json'}
    data = {"title": "Test Post", "body": "This is a test post", "userId": 1}
    response = requests.post(url, headers=headers, data=json.dumps(data))
    assert response.status_code == 201
這個示例包括了三個測試用例:
  • test_response_code:測試接口的響應(yīng)狀態(tài)碼是否為200。
  • test_response_data:測試接口返回的數(shù)據(jù)是否正確。
  • test_create_post:測試創(chuàng)建新的文章是否成功。

3.4 運行測試用例

???????完成測試用例的編寫后,我們可以在Pycharm中運行測試用例。在Pycharm中右鍵點擊測試用例文件,然后選擇“Run 'pytest in'...”選項即可。

???????也可以在腳本中通過主函數(shù)運行,在測試文件的末尾添加以下代碼即可:

if __name__ == '__main__':
    pytest.main(["-s", "-v", "test_file.py", "--html=report.html"])

???????其中,"-s""-v" 參數(shù)用于顯示測試結(jié)果的詳細(xì)信息,"test_file.py" 是測試文件名,"--html=report.html" 用于生成 HTML 格式的測試報告。
???????在運行測試用例時,Pytest會自動發(fā)現(xiàn)所有以“test_”開頭的函數(shù),并執(zhí)行它們。如果所有的測試用例都通過,則測試結(jié)果將顯示為“PASSED”,否則將顯示為“FAILED”

4. 生成測試報告

???????使用pytest-html插件可以方便地在Pycharm中生成測試報告。以下是生成測試報告的步驟:

???????在終端中安裝pytest-html插件:

pip install pytest-html

???????在運行測試用例時,添加參數(shù)“—html=report.html”來生成HTML格式的測試報告。例如:

pytest tests.py --html=report.html

???????等待測試用例執(zhí)行完畢后,在Pycharm項目文件夾下可以找到report.html文件,雙擊打開即可查看測試報告。

總結(jié)

???????本文介紹了如何在Pycharm中使用Pytest框架進行接口自動化測試。

???????首先需要準(zhǔn)備Python和Pycharm環(huán)境,并安裝必要的插件。然后編寫測試用例,使用Pytest執(zhí)行測試用例,并生成測試報告。通過這篇文章,相信你已經(jīng)掌握了如何使用Pytest框架進行接口自動化測試的基本技能。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容