下面這段話是從官網(wǎng)上copy的,我會講一下我的理解袖肥。如果有不對的地方歡迎留言。
--成都-阿木木
**歡迎加入測試交流群:自動化測試-夜行者(816489363)進行交流學(xué)習(xí)QAQ**
HttpRunner v3.x支持三種測試用例格式pytest振劳,YAML和JSON椎组。強烈建議以pytest格式而不是以前的YAML/JSON格式編寫和維護測試用例。
相互轉(zhuǎn)換格式關(guān)系如下圖所示:
?
記錄并生成測試用例
如果SUT(被測系統(tǒng))準(zhǔn)備就緒历恐,最有效的方法是先捕獲HTTP流量寸癌,然后使用HAR文件生成測試用例。請參閱以Record & Generate testcase獲取更多詳細(xì)信息弱贼。
然后蒸苇,基于生成的pytest測試用例,您可以根據(jù)需要進行一些調(diào)整吮旅,因此您需要了解測試用例格式的詳細(xì)信息溪烤。
測試用例結(jié)構(gòu)
每個測試用例都是的子類HttpRunner,并且必須具有兩個類屬性:config和teststeps庇勃。
配置:配置測試用例級別設(shè)置檬嘀,其中包括base_url,verify责嚷,variables鸳兽,export。
teststeps:teststep(List[Step])的列表罕拂,每個步驟都對應(yīng)一個API請求或另一個測試用例引用調(diào)用揍异。此外,variables/?extract/?validate/?hooks機制支持聂受,可制作十分復(fù)雜的測試方案蒿秦,可以參數(shù)傳遞、參數(shù)提取蛋济、斷言棍鳖、以及其他hook機制,可以自定義鉤子函數(shù)碗旅,也支持pytest和渡处、locust的相關(guān)操作,例如:我們可以增加一個pytest.ini文件祟辟,在其中進行測試用例目錄檢索的操作等
chain call
HttpRunner v3.x的最強大功能之一是chain call医瘫,您無需記住任何測試用例格式的詳細(xì)信息,并且在IDE中編寫測試用例時就可以智能地完成旧困。其實就是IDEA的api代碼自動補全醇份,讓大家不需要去記那么多的函數(shù)名稼锅。
config
每個測試用例都應(yīng)該有一個config部分,您可以在其中配置測試用例級別的設(shè)置僚纷。
name(必填)
指定測試用例名稱矩距。這將顯示在執(zhí)行日志和測試報告中。
base_url(可選)
指定SUT的通用架構(gòu)和主機部分怖竭,例如https://postman-echo.com锥债。如果base_url指定,則teststep中的url只能設(shè)置相對路徑部分痊臭。如果要在不同的SUT環(huán)境之間切換哮肚,這將特別有用。
variables(可選)
指定測試用例的公共變量广匙。每個測試步驟都可以引用未在步驟變量中設(shè)置的配置變量允趟。換句話說,步驟變量比配置變量具有更高的優(yōu)先級艇潭。
verify (可選)
指定是否驗證服務(wù)器的TLS證書拼窥。如果我們想記錄測試用例執(zhí)行的HTTP流量戏蔑,這將特別有用蹋凝,因為如果沒有設(shè)置verify或?qū)⑵湓O(shè)置為True,則會發(fā)生SSLError总棵。
SSLError(SSLCertVerificationError(1鳍寂,'[SSL:CERTIFICATE_VERIFY_FAILED]證書驗證失敗:證書鏈中的自簽名證書(_ssl.c:1076)')
export (可選)
指定導(dǎo)出的測試用例會話變量情龄。將每個測試用例視為一個黑盒迄汛,config?variables是輸入部分,而config?export是輸出部分骤视。特別是鞍爱,當(dāng)一個測試用例在另一個測試用例的步驟中被引用,并且將被提取一些會話變量以在后續(xù)測試步驟中使用時专酗,則提取的會話變量應(yīng)在配置export部分中進行配置睹逃。將測試用例的某些變量指定為全局變量。(PS:不配置export在另一個引用類中進行該累的變量調(diào)用時祷肯,直接export也是可以的沉填,最好還是配置一下)
注意:為簡化起見,不推薦使用HttpRunner v2.x中的API概念佑笋。您可以將API視為只有一個請求步驟的測試用例翼闹。
下圖的意思是,我們有一個測試套件testsuite蒋纬,套件中會有很多的測試用例testcase猎荠,testcase之間可以相互引用teststep坚弱,通過with_jmespath進行參數(shù)的提取,通過call引用其他測試用例類关摇,然后通過export引用其他測試用例的變量
teststeps中會有很多step史汗,也就是常說的測試步驟,一個step中只有RunRequest或者RunTestCase拒垃,step的先后順序停撞,有step的前后控制,由step所處的位置由上到下執(zhí)行悼瓮。
RunRequest(名稱)
RunRequest?在一個步驟中用于向API發(fā)出請求戈毒,并對響應(yīng)進行一些提取或驗證。
.name? ?
RunRequest?的參數(shù)用于指定測試步驟名稱横堡,該名稱將顯示在執(zhí)行日志和測試報告中埋市。
.with_variables
指定測試步驟變量。每個步驟的變量都是獨立的命贴,因此道宅,如果要在多個步驟中共享變量,則應(yīng)在配置變量中定義變量胸蛛。此外污茵,步驟變量將覆蓋配置變量中具有相同名稱的變量。(PS:注意參數(shù)傳遞的格式使用**{}葬项,使用關(guān)鍵字參數(shù)解包的方式進行參數(shù)傳遞給with_variables)泞当,參數(shù)引用使用"$變量名",如果是函數(shù)引用使用"${函數(shù)名()}"
method(url)
指定HTTP方法和SUT的URL民珍。這些對應(yīng)于method和url參數(shù)requests.request襟士。
如果base_url在config中設(shè)置,則url只能設(shè)置相對路徑部分嚷量。如果在Config中設(shè)置了baseurl陋桂,method中只能設(shè)置相對路徑,可選參數(shù)為get/post/put/delete/等蝶溶。
.with_params
指定請求網(wǎng)址的查詢字符串嗜历。這對應(yīng)于的params參數(shù)requests.request。
.with_headers
為請求指定HTTP標(biāo)頭身坐。這對應(yīng)于的headers參數(shù)requests.request秸脱。
.with_cookies
指定HTTP請求cookie。這對應(yīng)于的cookies參數(shù)requests.request部蛇。
.with_data
指定HTTP請求正文摊唇。這對應(yīng)于的data參數(shù)requests.request。
.with_json
在json中指定HTTP請求正文涯鲁。這對應(yīng)于的json參數(shù)requests.request巷查。
extract(數(shù)據(jù)提扔行颉)
.WITH_JMESPATH
使用jmespath提取JSON響應(yīng)主體。
with_jmespath(jmes_path:文字岛请,var_name:文字)
jmes_path:jmespath表達式旭寿,有關(guān)更多詳細(xì)信息,請參考JMESPath教程
var_name:存儲提取值的變量名崇败,可以在后續(xù)測試步驟中引用它
validate
.ASSERT_XXX
使用jmespath提取JSON響應(yīng)主體并使用期望值進行驗證盅称。
assert_XXX(jmes_path:文本,期望值:任何后室,消息:文本=“”)
jmes_path:jmespath表達式缩膝,有關(guān)更多詳細(xì)信息,請參考JMESPath教程
Expected_value:指定的期望值岸霹,變量或函數(shù)引用也可以在此處使用
消息(可選):用于指示斷言錯誤的原因
RunTestCase(名稱)
RunTestCase?在一個步驟中用于引用另一個測試用例調(diào)用疾层。
.name?
RunTestCase?的參數(shù)用于指定測試步驟名稱,該名稱將顯示在執(zhí)行日志和測試報告中贡避。
.with_variables
指定測試步驟變量痛黎。每個步驟的變量都是獨立的,因此刮吧,如果要在多個步驟中共享變量湖饱,則應(yīng)在配置變量中定義變量。此外皇筛,步驟變量將覆蓋配置變量中具有相同名稱的變量琉历。
.call
指定引用的測試用例類坠七。你在引用另一個測試用例的step中的參數(shù)時水醋,需要先指定引用的測試用例類
.export
指定會話變量名稱以從引用的測試用例中導(dǎo)出。導(dǎo)出的變量可以通過后續(xù)測試步驟step進行引用彪置。導(dǎo)出的是step中的jmespath提取的變量拄踪,export之后,這個變量是全局變量拳魁,但是不能再confg中進行設(shè)置惶桐,因為測試類的引用是在step中進行的,而類的初始化是先初始化config潘懊,然后初始化teststeps姚糊,所以參數(shù)的傳遞在step之間
**歡迎加入測試交流群:自動化測試-夜行者(816489363)進行交流學(xué)習(xí)QAQ**