pytest介面測試輕鬆入門
通過Postman請求結果如下圖:
那我們怎麼用pytest進行測試呢?
在介面測試,我們要用到requests包,實現程式碼如下:
import pytest import allure import requests class TestSimple(object): def TestWatcher(self): url = "http://wthrcdn.etouch.cn/weather_mini?city=成都" r = requests.get(url) assert r.status_code == 200 d = r.json() print(d)
簡述:上面通過request實現了天氣的查詢,對其請求狀態做了驗證(如果HTTP狀態碼為200則認為測試通過),並對介面請求結果進行了列印。
執行上面程式碼時遇到問題:No tests were found
結果問題查詢:pytest 啟動檔名是以test開頭,函式名是以test開頭。所以我們把上面的函式名改下,把TestWacher改為testWacher再去執行,效果如下:
相比於狀態碼,我們可能更喜歡進行關鍵字校驗,如 查詢結果中沒有wendu欄位,則視為用例失敗怎麼實現?
此時可以使用pytest的xfail標記用例預期失敗,如果用例執行成功則顯示Xpassed,失敗則顯示xfailed。xfail標記並不會影響用例的執行。
新增程式碼如下:
if ('wendu' not in d['data'].keys()): pytest.xfail('返回結果不正確,wendu=NULL')
假設我們要檢查的欄位是 wendi,而結果中沒有該欄位,此時執行效果如下:
如果我們在執行時,如何讓報告顯得更漂亮呢?這時我們可以進行美化,最終程式碼如下:
@allure.feature("測試Dome") class TestSimple(object): @allure.story("天氣查詢") @allure.description('一個免費的天氣查詢介面測試') @allure.severity('critical') def testWatcher(self): url = "http://wthrcdn.etouch.cn/weather_mini?city=成都" with allure.step("查詢天氣"): r = requests.get(url) assert r.status_code == 200 d = r.json() print(d) if ('wendu' not in d['data'].keys()): pytest.xfail('返回結果不正確,wendu=NULL')
常見allure報告美化總結:
@allure.feature(“測試用例特性場景(主要功能模組)”)
@allure.story(“feature功能模組下的分支功能(用例名稱)”)
@allure.description(“這裡是用例的描述資訊”)
@allure.severity(“測試用例等級”)
說明:allure對用例的等級劃分成五個等級
- blocker – 阻塞缺陷(功能未實現,無法下一步)
- critical – 嚴重缺陷(功能點缺失)
- normal – 一般缺陷(邊界情況,格式錯誤)
- minor – 次要缺陷(介面錯誤與ui需求不符)
- trivial – 輕微缺陷(必需項無提示,或者提示不規範)
allure.description_html(html程式碼) #提供一些HTML在測試用例的描述部分
@allure.step(“用例步驟說明”)
使用方法:
①@allure.step() 只能以裝飾器的形式放在類或者方法上面;
②with allure.step(): 可以放在測試用例方法裡面,但測試步驟的程式碼需要被該語句包含;
allure.attach(body, name, attachment_type, extension)
用於向測試報告中輸入一些附加的資訊,通常是一些測試資料資訊,引數說明:
- body - 要寫入檔案的原始內容
- name - 包含檔名的字串
- attachment_type - 其中一個allure.attachment_type值,可以是文字、圖片、HTML等
- extension - 提供的將用作建立檔案的副檔名
@allure.link(“URL=連結地址”)
@allure.issue(“URL=問題連結”)
@allure.testcase(“URL=用例連結”)
最後執行用例,並生成allure報告:
點選特性場景,進入詳情,結果如下:
上面就實現了一個簡單的pytest介面測試例子,但怎麼引數化,怎麼讓程式碼層次更清晰,要不要這麼low b?請關注小編後續文章。
另外,歡迎加入軟體測試技術交流群 313782132 ~進群可領取免費軟體測試資料以及群內測試大牛解惑!
測試工程師職業發展路線圖
功能測試 — 介面測試 — 自動化測試 — 測試開發 — 測試架構師
加油吧,測試人!如果你需要提升規劃,那就行動吧,在路上總比在起點觀望的要好。事必有法,然後有成。
資源不錯就給個推薦吧~