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