httprunner框架有多種編寫測試用例的形式瓤鼻,一般常用第二種和第三種秉版;無論選擇哪一種,httprunner都會生成一個.py文件茬祷。所以可按照個人習(xí)慣選擇清焕。
一、錄制測試用例
-
charles抓包
-
導(dǎo)出.har文件
生成yml格式用例
命令:har2case har_case/huo_test.har -2y
生成.py格式用例
命令:har2case har_case/huo_test.har
根據(jù)生成的用例祭犯,進一步進行優(yōu)化
二秸妥、編寫測試用例-yml格式
config:
name: xxx
variables: # config variables
varA: "configA"
varB: "configB"
varC: "configC"
parameters: # parameter variables
varA: ["paramA1"]
varB: ["paramB1"]
teststeps:
-
name: step 1
variables: # step variables
varA: "step1A"
request:
url: /$varA/$varB/$varC # varA="step1A", varB="paramB1", varC="configC"
method: GET
extract: # extracted variables
varA: body.data.A # suppose varA="extractVarA"
varB: body.data.B # suppose varB="extractVarB"
-
name: step 2
varialbes:
varA: "step2A"
request:
url: /$varA/$varB/$varC # varA="step2A", varB="extractVarB", varC="configC"
method: GET
三、編寫測試用例-.py格式
每個HttpRunner測試用例是HttpRunner的子類沃粗,并且必須包含config和teststeps兩個屬性粥惧。
config配置
2.1 name(必須的): testcase的一部分,會顯示在測試報告和運行日志中最盅。
2.2 base_url(可選擇的): 功能路徑影晓,url的一部分
2.3 variables(可選擇的):testcase通用變量。每個step中可以引用沒有在step中設(shè)置的變量檩禾。換句話說挂签,step中設(shè)置的變量的級別比在config中設(shè)置的變量級別更高。
2.4. verify(可選擇的):指定是否驗證服務(wù)器的TLS證書盼产。如果想要記錄testcase中的http數(shù)據(jù)特別有用饵婆。如果不設(shè)置或者設(shè)置為true則會產(chǎn)生SSLError錯誤。
2.5. export(可選擇的):提取testcase的session變量戏售。測試用例是為黑盒侨核,config中的的variables視為輸入,export為輸出灌灾。特別是搓译,當(dāng)該testcase中的某個輸出作為下一個testcase中的輸入的時候特別有用。-
teststeps列表
3.1. 每一個testcase中包括一個或者多個排序的steps列表(List[Step])锋喜。每一個step相當(dāng)于一個api的request或者另一個testcase的引用
3.2. .with_variables: teststep的變量些己。 每個步驟中的變量都是相互獨立的,因此如果想相互共享variable的話嘿般,需要把variable配置在config中段标。另外teststep中的變量會覆蓋config中相同名稱的變量。
.method(url): 指定http的方法和SUt的url炉奴,它對應(yīng)于requests.request的方法和url參數(shù)逼庞。如果配置中設(shè)置了base_url,則此處之能設(shè)置相對路徑瞻赶。
.with_params 指定request url的參數(shù)赛糟,這個相當(dāng)于requests.request中的params參數(shù)的數(shù)據(jù)派任。
.with_headers 指定request的http headers。相當(dāng)于requests.request的headers參數(shù)部分璧南。
.with_cookies 指定request的http cookies掌逛。相當(dāng)于requests.request的cookies參數(shù)部分。
.with_data 指定request的http body穆咐。相當(dāng)于requests.request的data參數(shù)部分颤诀。
.with_json 指定request的http json。相當(dāng)于requests.request的json參數(shù)部分对湃。
.extract 使用jmespath提取json 應(yīng)答數(shù)據(jù): .with_jmespath(jmes_path:Text, var_name:Text)-->jmes_path: jmespath表達式崖叫,可以參考https://jmespath.org/tutorial.html做詳細了解;var_name: 存儲提取值的變量名拍柒,該變量可以被后續(xù)的steps中直接使用心傀。
.validate 使用jmespath提取json應(yīng)答數(shù)據(jù),并使用.assert_xxx(jmes_path:Text, expected_value:Any)驗證期望值拆讯。其中jmes_path表示jmespath表達式脂男; expected_value為預(yù)期值,變量或者函數(shù)表示种呐。如下圖: