本文關鍵闡述了python+pytest自動化技術測試函數測試類測試標準的封裝形式,文章內容緊扣主題開展詳盡的基本介紹,具有很強的實用價值,務必的朋友可以學習一下
序言
那么今天,我想跟大家聊聊python+pytest接口自動化里將編碼開展封裝形式,只有把測試程序開展封裝形式,才會被測試框架鑒別實行。
例如多帶帶插口要求編碼如下所示:
importrequests headers={ "user-agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/99.0.4844.51Safari/537.36" } url="https://mp.toutiao.com/profile_v4/" res=requests.get(url=h_url,headers=headers)
假定我們應該將上邊這一段代碼開發成測試框架能實施的功能測試,只不過是那樣敲代碼顯而易見還遠遠不夠,還要開展如下所示填補:
需要把代碼封裝成單元測試卷架構(pytest或unittest)能識別測試函數或測試類,否則就會不被鑒別實行。務必再加上肯定,即結論與希望中間對比,單元測試卷架構才可以判斷該測試用例執行結果是不是根據,結論==希望則表明根據,不然不成功。
python中函數公式及其類封裝形式這里就不進行任何表明,本文的目的在于讓大家都搞清楚在接口自動化檢測中通常如何封裝測試編碼。
一、功能測試封裝形式的基本標準
功能測試的封裝形式主要有兩種,測試函數和測試類,封裝形式的基本標準如下所示:
1個測試函數相匹配1條功能測試。測試類中可定義好幾個測試標準,1個測試標準相匹配1條功能測試,測試類可以理解為是個功能測試集。pytest中測試函數或測試標準的取名必須以test開始,測試類名必須以Test開始。實際命名規范可以參考一下我其他回答pytest(3)-檢測命名規范。針對單插口檢測校檢,一單插口功能測試只包括1個接口請求,將要1個接口請求封裝形式成測試函數或測試標準。針對情景(多插口)的檢測校檢,1條情景功能測試需要求好幾個插口,所以需要將好幾個接口請求封裝形式同一個測試函數或方式中。通常封裝形式1個插口正面校檢、出現異常校檢封裝形式成不同類型的方式,并封裝形式同一個測試類中。如定位1個登陸的測試類,恰當登錄名、登陸密碼要求封裝形式成方式(即1條功能測試),恰當登錄名、不正確登陸密碼要求封裝形式成另外方式(即另一只功能測試)。還可以將某一功能模塊或作用相關的插口測試用例封裝形式同一個測試類中。例如用戶中心涉及的插口,能夠封裝形式同一個測試類無厘頭、測試函數的封裝形式
一般說來,1個測試函數相匹配1條測試用例。上邊的代碼開發成一條功能測試,實例如下所示:
注重,pytest中測試函數取名務必以test開頭,如test_get_home。
三、測試類/方式的封裝形式
1個測試類等同于1個功能測試集,類中的每一個方式相匹配1條功能測試。以登陸插口為例子,封裝形式成測試類,實例如下所示:
注重,pytest中測試類取名必須以Test開始,如TestLogin,且測試類中不能出現init方式。測試類中測試標準必須以test開始,如test_login_normal。
四、示例代碼
pytest中可以使用命令行或者使用代碼方式即pytest.main()執行用例,具體可參考文章pytest(1)-簡介。
完整的示例代碼如下:
import requests import pytest import json def test_get_home(): ''' 請求首頁接口 :return: ''' headers={ "user-agent":"Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/99.0.4844.51 Safari/537.36" } url="https://www.cnblogs.com/lfr0123/" res=requests.get(url=url,headers=headers) #斷言,判斷返回結果的code是否等于200,當然實際接口測試中一般返回結果中還會有別的字段需要斷言 assert res.status_code==200 class TestLogin: ''' 登錄接口校驗 ''' url="http://127.0.0.1:5000/login" headers={"Content-Type":"application/json;charset=utf8"} def test_login_normal(self): '''正確用戶名、正確密碼登錄''' data={ "username":"AndyLiu", "password":"123456" } res=requests.post(url=self.url,json=data,headers=self.headers) #斷言 assert res.status_code==200 assert json.loads(res.text)["token"] def test_login_error(self): '''正確用戶名、錯誤密碼登錄''' data={ "username":"AndyLiu", "password":"111111" } res=requests.post(url=self.url,json=data,headers=self.headers) #斷言 assert res.status_code==200 assert not json.loads(res.text)["token"] if __name__=='__main__': pytest.main()
匯總
測試函數、測試類/測試標準的封裝形式,實際上不論什么單元測試卷架構,遵照的形式都是一樣的。
但在命名規則上都各有自己的需求,例如pytest與unittest中檢測命名方式具有一定的差別。
怎樣把擁有自己肯定的函數公式或方式看作是1條功能測試,那樣測試類其實就是個帶有1條或是好幾條功能測試的功能測試集,類中的每一個方式相匹配1條功能測試。
1個測試類中擺放什么測試標準,也就是說1個功能測試集中化應當涵蓋什么功能測試,這一可以按新項目本身情況判斷,也可以按照測試工程師自己的觀點來定,中心思想就是為了條理清晰
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/130272.html
摘要:其中用到編程等,還需要花更多的精力去深入學習,當每項技能都能掌握到一定深度,才能稱為一個完整的知識體系。 都有哪些種類的配置文件 pytest.ini:pytes...
摘要:單元測試框架作為的標準庫,是其他單元測試框架的基礎。可以和和配合使用編寫單元測試。官網地址單元測試覆蓋率工具單元測試中還需要用到代碼覆蓋率工具。代碼覆蓋率統計工具用來發現沒有被測試覆蓋的代碼,完善單元測試的覆蓋率。 在應用程序中,單元是具有一個或多個輸入和單個輸出的軟件中最小可測試部分。單元...
摘要:本套代碼和邏輯是本人的勞動成果,如果有轉載需要標注,非常適合公司做項目的同學小白也可以學哦接口自動化項目目錄公共方法的封裝如果不用配置文件可以使用這個方法進行封裝但是有一定的缺陷可以不使用字典。這是在正常的命令行解析之前發生的。 ...
摘要:必然的,他們會拋棄標準庫中的,使用或者發明自己心儀的單元測試框架。究其原因,一些人會說時間寫代碼都不夠,哪還有空寫單元測試。最后我的個人觀點,單元測試其實還有一個非常重要的作用,就是替代函數文檔注釋。希望從今天起,你的代碼也都有單元測試。 單元測試是每種編程語言必學的課題,是保護開發者的強力護盾,每個程序員都在時間允許的情況下盡可能多的寫單元測試,今天我們不討論其必要性,只拋磚引玉聊一...
此篇文章詳細介紹了python的單元測試卷架構pytest,原文中根據實例編碼推薦的十分詳盡。對大家學習培訓和工作具有很強的參照參考意義,需要的小伙伴可以必須 pytest是python語言表達中一個強悍的單元測試卷架構,用于管理方法和管理功能測試,可運用在單元測試卷、功能測試工作上。 unittest也是python語言表達中一個單元測試卷架構,可是作用比較有限,沒有pytest靈便。 ...
閱讀 919·2023-01-14 11:38
閱讀 891·2023-01-14 11:04
閱讀 750·2023-01-14 10:48
閱讀 2039·2023-01-14 10:34
閱讀 956·2023-01-14 10:24
閱讀 833·2023-01-14 10:18
閱讀 506·2023-01-14 10:09
閱讀 583·2023-01-14 10:02