httprunner3.x詳細(xì)教程三(httprunner中testcase的構(gòu)造)

下面這段話是從官網(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**

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市授舟,隨后出現(xiàn)的幾起案子救恨,更是在濱河造成了極大的恐慌,老刑警劉巖释树,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肠槽,死亡現(xiàn)場離奇詭異擎淤,居然都是意外死亡,警方通過查閱死者的電腦和手機秸仙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門嘴拢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寂纪,你說我怎么就攤上這事席吴。” “怎么了捞蛋?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵抢腐,是天一觀的道長。 經(jīng)常有香客問我襟交,道長迈倍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任捣域,我火速辦了婚禮啼染,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘焕梅。我一直安慰自己迹鹅,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布贞言。 她就那樣靜靜地躺著斜棚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪该窗。 梳的紋絲不亂的頭發(fā)上弟蚀,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音酗失,去河邊找鬼义钉。 笑死,一個胖子當(dāng)著我的面吹牛规肴,可吹牛的內(nèi)容都是我干的捶闸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拖刃,長吁一口氣:“原來是場噩夢啊……” “哼删壮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起兑牡,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤央碟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后发绢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體硬耍,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡垄琐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了经柴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狸窘。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖坯认,靈堂內(nèi)的尸體忽然破棺而出翻擒,到底是詐尸還是另有隱情,我是刑警寧澤牛哺,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布陋气,位于F島的核電站,受9級特大地震影響引润,放射性物質(zhì)發(fā)生泄漏巩趁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一淳附、第九天 我趴在偏房一處隱蔽的房頂上張望议慰。 院中可真熱鬧,春花似錦奴曙、人聲如沸别凹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炉菲。三九已至,卻和暖如春坤溃,著一層夾襖步出監(jiān)牢的瞬間拍霜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工浇雹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沉御,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓昭灵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親伐谈。 傳聞我的和親對象是個殘疾皇子烂完,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355