前言
???????本期是我們《保姆級Pytest接口自動化測試框架實戰(zhàn)指南》系列中的核心功能搪桂,Pytest框架串聯(lián)了整個自動化測試框架始終。
???????隨著軟件的不斷復(fù)雜化描扯,手動測試已經(jīng)無法滿足快速迭代和高質(zhì)量的要求定页。所以自動化測試框架變得越來越重要绽诚,特別是Pytest,一個出色的Python單元測試框架恩够。
???????本文將教你如何在Pycharm中使用Pytest框架進行接口自動化測試卒落,主要分為以下幾個部分:
-
環(huán)境準備
-
安裝必要的插件
-
安裝必要的插件
-
運行測試用例和報告生成
1. 環(huá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)該清晰明了速缨,能夠表達被測試的功能或特性。
- 函數(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)該清晰明了贮预,能夠表達被測試的功能或特性。
- 函數(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é)果的詳細信息抬伺,"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框架進行接口自動化測試姊途。
???????首先需要準備Python和Pycharm環(huán)境知态,并安裝必要的插件。然后編寫測試用例贡茅,使用Pytest執(zhí)行測試用例顶考,并生成測試報告妖泄。通過這篇文章,相信你已經(jīng)掌握了如何使用Pytest框架進行接口自動化測試的基本技能甚负。