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

前言

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

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

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框架進行接口自動化測試的基本技能甚负。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梭域,一起剝皮案震驚了整個濱河市病涨,隨后出現(xiàn)的幾起案子璧坟,更是在濱河造成了極大的恐慌赎懦,老刑警劉巖励两,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件当悔,死亡現(xiàn)場離奇詭異盲憎,居然都是意外死亡胳挎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門窑眯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伸但,“玉大人更胖,你說我怎么就攤上這事隔显。” “怎么了彪标?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵捞烟,是天一觀的道長当船。 經(jīng)常有香客問我,道長德频,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任表谊,我火速辦了婚禮盖喷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘押逼。我一直安慰自己惦界,他們只是感情好沾歪,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布雾消。 她就那樣靜靜地躺著,像睡著了一般狂窑。 火紅的嫁衣襯著肌膚如雪泉哈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天丛晦,我揣著相機與錄音烫沙,去河邊找鬼锌蓄。 笑死撑柔,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的乏冀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼识虚,長吁一口氣:“原來是場噩夢啊……” “哼妒茬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起乍钻,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤多糠,失蹤者是張志新(化名)和其女友劉穎浩考,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搭伤,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡袜瞬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年拍鲤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片殿漠。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡绞幌,死狀恐怖一忱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情帘营,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響杜窄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚀腿,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一莉钙、第九天 我趴在偏房一處隱蔽的房頂上張望筛谚。 院中可真熱鬧,春花似錦蜀涨、人聲如沸蝎毡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烧董。三九已至,卻和暖如春预吆,著一層夾襖步出監(jiān)牢的瞬間胳泉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工凤瘦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蔬芥,地道東北人笔诵。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像思喊,于是被迫代替她去往敵國和親次酌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容