本文關(guān)鍵闡述了python+pytest自動(dòng)化技術(shù)測(cè)試函數(shù)測(cè)試類測(cè)試標(biāo)準(zhǔn)的封裝形式,文章內(nèi)容緊扣主題開(kāi)展詳盡的基本介紹,具有很強(qiáng)的實(shí)用價(jià)值,務(wù)必的朋友可以學(xué)習(xí)一下
序言
那么今天,我想跟大家聊聊python+pytest接口自動(dòng)化里將編碼開(kāi)展封裝形式,只有把測(cè)試程序開(kāi)展封裝形式,才會(huì)被測(cè)試框架鑒別實(shí)行。
例如多帶帶插口要求編碼如下所示:
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)
假定我們應(yīng)該將上邊這一段代碼開(kāi)發(fā)成測(cè)試框架能實(shí)施的功能測(cè)試,只不過(guò)是那樣敲代碼顯而易見(jiàn)還遠(yuǎn)遠(yuǎn)不夠,還要開(kāi)展如下所示填補(bǔ):
需要把代碼封裝成單元測(cè)試卷架構(gòu)(pytest或unittest)能識(shí)別測(cè)試函數(shù)或測(cè)試類,否則就會(huì)不被鑒別實(shí)行。務(wù)必再加上肯定,即結(jié)論與希望中間對(duì)比,單元測(cè)試卷架構(gòu)才可以判斷該測(cè)試用例執(zhí)行結(jié)果是不是根據(jù),結(jié)論==希望則表明根據(jù),不然不成功。
python中函數(shù)公式及其類封裝形式這里就不進(jìn)行任何表明,本文的目的在于讓大家都搞清楚在接口自動(dòng)化檢測(cè)中通常如何封裝測(cè)試編碼。
一、功能測(cè)試封裝形式的基本標(biāo)準(zhǔn)
功能測(cè)試的封裝形式主要有兩種,測(cè)試函數(shù)和測(cè)試類,封裝形式的基本標(biāo)準(zhǔn)如下所示:
1個(gè)測(cè)試函數(shù)相匹配1條功能測(cè)試。測(cè)試類中可定義好幾個(gè)測(cè)試標(biāo)準(zhǔn),1個(gè)測(cè)試標(biāo)準(zhǔn)相匹配1條功能測(cè)試,測(cè)試類可以理解為是個(gè)功能測(cè)試集。pytest中測(cè)試函數(shù)或測(cè)試標(biāo)準(zhǔn)的取名必須以test開(kāi)始,測(cè)試類名必須以Test開(kāi)始。實(shí)際命名規(guī)范可以參考一下我其他回答pytest(3)-檢測(cè)命名規(guī)范。針對(duì)單插口檢測(cè)校檢,一單插口功能測(cè)試只包括1個(gè)接口請(qǐng)求,將要1個(gè)接口請(qǐng)求封裝形式成測(cè)試函數(shù)或測(cè)試標(biāo)準(zhǔn)。針對(duì)情景(多插口)的檢測(cè)校檢,1條情景功能測(cè)試需要求好幾個(gè)插口,所以需要將好幾個(gè)接口請(qǐng)求封裝形式同一個(gè)測(cè)試函數(shù)或方式中。通常封裝形式1個(gè)插口正面校檢、出現(xiàn)異常校檢封裝形式成不同類型的方式,并封裝形式同一個(gè)測(cè)試類中。如定位1個(gè)登陸的測(cè)試類,恰當(dāng)?shù)卿浢⒌顷懨艽a要求封裝形式成方式(即1條功能測(cè)試),恰當(dāng)?shù)卿浢⒉徽_登陸密碼要求封裝形式成另外方式(即另一只功能測(cè)試)。還可以將某一功能模塊或作用相關(guān)的插口測(cè)試用例封裝形式同一個(gè)測(cè)試類中。例如用戶中心涉及的插口,能夠封裝形式同一個(gè)測(cè)試類無(wú)厘頭、測(cè)試函數(shù)的封裝形式
一般說(shuō)來(lái),1個(gè)測(cè)試函數(shù)相匹配1條測(cè)試用例。上邊的代碼開(kāi)發(fā)成一條功能測(cè)試,實(shí)例如下所示:
注重,pytest中測(cè)試函數(shù)取名務(wù)必以test開(kāi)頭,如test_get_home。
三、測(cè)試類/方式的封裝形式
1個(gè)測(cè)試類等同于1個(gè)功能測(cè)試集,類中的每一個(gè)方式相匹配1條功能測(cè)試。以登陸插口為例子,封裝形式成測(cè)試類,實(shí)例如下所示:
注重,pytest中測(cè)試類取名必須以Test開(kāi)始,如TestLogin,且測(cè)試類中不能出現(xiàn)init方式。測(cè)試類中測(cè)試標(biāo)準(zhǔn)必須以test開(kāi)始,如test_login_normal。
四、示例代碼
pytest中可以使用命令行或者使用代碼方式即pytest.main()執(zhí)行用例,具體可參考文章pytest(1)-簡(jiǎn)介。
完整的示例代碼如下:
import requests import pytest import json def test_get_home(): ''' 請(qǐng)求首頁(yè)接口 :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) #斷言,判斷返回結(jié)果的code是否等于200,當(dāng)然實(shí)際接口測(cè)試中一般返回結(jié)果中還會(huì)有別的字段需要斷言 assert res.status_code==200 class TestLogin: ''' 登錄接口校驗(yàn) ''' 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): '''正確用戶名、錯(cuò)誤密碼登錄''' 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()
匯總
測(cè)試函數(shù)、測(cè)試類/測(cè)試標(biāo)準(zhǔn)的封裝形式,實(shí)際上不論什么單元測(cè)試卷架構(gòu),遵照的形式都是一樣的。
但在命名規(guī)則上都各有自己的需求,例如pytest與unittest中檢測(cè)命名方式具有一定的差別。
怎樣把擁有自己肯定的函數(shù)公式或方式看作是1條功能測(cè)試,那樣測(cè)試類其實(shí)就是個(gè)帶有1條或是好幾條功能測(cè)試的功能測(cè)試集,類中的每一個(gè)方式相匹配1條功能測(cè)試。
1個(gè)測(cè)試類中擺放什么測(cè)試標(biāo)準(zhǔn),也就是說(shuō)1個(gè)功能測(cè)試集中化應(yīng)當(dāng)涵蓋什么功能測(cè)試,這一可以按新項(xiàng)目本身情況判斷,也可以按照測(cè)試工程師自己的觀點(diǎn)來(lái)定,中心思想就是為了條理清晰
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)?lái)幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/130272.html
摘要:其中用到編程等,還需要花更多的精力去深入學(xué)習(xí),當(dāng)每項(xiàng)技能都能掌握到一定深度,才能稱為一個(gè)完整的知識(shí)體系。 都有哪些種類的配置文件 pytest.ini:pytes...
摘要:?jiǎn)卧獪y(cè)試框架作為的標(biāo)準(zhǔn)庫(kù),是其他單元測(cè)試框架的基礎(chǔ)。可以和和配合使用編寫單元測(cè)試。官網(wǎng)地址單元測(cè)試覆蓋率工具單元測(cè)試中還需要用到代碼覆蓋率工具。代碼覆蓋率統(tǒng)計(jì)工具用來(lái)發(fā)現(xiàn)沒(méi)有被測(cè)試覆蓋的代碼,完善單元測(cè)試的覆蓋率。 在應(yīng)用程序中,單元是具有一個(gè)或多個(gè)輸入和單個(gè)輸出的軟件中最小可測(cè)試部分。單元...
摘要:本套代碼和邏輯是本人的勞動(dòng)成果,如果有轉(zhuǎn)載需要標(biāo)注,非常適合公司做項(xiàng)目的同學(xué)小白也可以學(xué)哦接口自動(dòng)化項(xiàng)目目錄公共方法的封裝如果不用配置文件可以使用這個(gè)方法進(jìn)行封裝但是有一定的缺陷可以不使用字典。這是在正常的命令行解析之前發(fā)生的。 ...
摘要:必然的,他們會(huì)拋棄標(biāo)準(zhǔn)庫(kù)中的,使用或者發(fā)明自己心儀的單元測(cè)試框架。究其原因,一些人會(huì)說(shuō)時(shí)間寫代碼都不夠,哪還有空寫單元測(cè)試。最后我的個(gè)人觀點(diǎn),單元測(cè)試其實(shí)還有一個(gè)非常重要的作用,就是替代函數(shù)文檔注釋。希望從今天起,你的代碼也都有單元測(cè)試。 單元測(cè)試是每種編程語(yǔ)言必學(xué)的課題,是保護(hù)開(kāi)發(fā)者的強(qiáng)力護(hù)盾,每個(gè)程序員都在時(shí)間允許的情況下盡可能多的寫單元測(cè)試,今天我們不討論其必要性,只拋磚引玉聊一...
此篇文章詳細(xì)介紹了python的單元測(cè)試卷架構(gòu)pytest,原文中根據(jù)實(shí)例編碼推薦的十分詳盡。對(duì)大家學(xué)習(xí)培訓(xùn)和工作具有很強(qiáng)的參照參考意義,需要的小伙伴可以必須 pytest是python語(yǔ)言表達(dá)中一個(gè)強(qiáng)悍的單元測(cè)試卷架構(gòu),用于管理方法和管理功能測(cè)試,可運(yùn)用在單元測(cè)試卷、功能測(cè)試工作上。 unittest也是python語(yǔ)言表達(dá)中一個(gè)單元測(cè)試卷架構(gòu),可是作用比較有限,沒(méi)有pytest靈便。 ...
閱讀 910·2023-01-14 11:38
閱讀 877·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1981·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 818·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02