httprunner框架有多種編寫測(cè)試用例的形式,一般常用第二種和第三種;無論選擇哪一種,httprunner都會(huì)生成一個(gè).py文件。所以可按照個(gè)人習(xí)慣選擇。
一、錄制測(cè)試用例
-
charles抓包
image.png -
導(dǎo)出.har文件
image.png 生成yml格式用例
命令:har2case har_case/huo_test.har -2y
生成.py格式用例
命令:har2case har_case/huo_test.har
根據(jù)生成的用例,進(jìn)一步進(jìn)行優(yōu)化
二、編寫測(cè)試用例-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
三、編寫測(cè)試用例-.py格式
每個(gè)HttpRunner測(cè)試用例是HttpRunner的子類,并且必須包含config和teststeps兩個(gè)屬性。
config配置
2.1 name(必須的): testcase的一部分,會(huì)顯示在測(cè)試報(bào)告和運(yùn)行日志中。
2.2 base_url(可選擇的): 功能路徑,url的一部分
2.3 variables(可選擇的):testcase通用變量。每個(gè)step中可以引用沒有在step中設(shè)置的變量。換句話說,step中設(shè)置的變量的級(jí)別比在config中設(shè)置的變量級(jí)別更高。
2.4. verify(可選擇的):指定是否驗(yàn)證服務(wù)器的TLS證書。如果想要記錄testcase中的http數(shù)據(jù)特別有用。如果不設(shè)置或者設(shè)置為true則會(huì)產(chǎn)生SSLError錯(cuò)誤。
2.5. export(可選擇的):提取testcase的session變量。測(cè)試用例是為黑盒,config中的的variables視為輸入,export為輸出。特別是,當(dāng)該testcase中的某個(gè)輸出作為下一個(gè)testcase中的輸入的時(shí)候特別有用。-
teststeps列表
3.1. 每一個(gè)testcase中包括一個(gè)或者多個(gè)排序的steps列表(List[Step])。每一個(gè)step相當(dāng)于一個(gè)api的request或者另一個(gè)testcase的引用
3.2. .with_variables: teststep的變量。 每個(gè)步驟中的變量都是相互獨(dú)立的,因此如果想相互共享variable的話,需要把variable配置在config中。另外teststep中的變量會(huì)覆蓋config中相同名稱的變量。
.method(url): 指定http的方法和SUt的url,它對(duì)應(yīng)于requests.request的方法和url參數(shù)。如果配置中設(shè)置了base_url,則此處之能設(shè)置相對(duì)路徑。
.with_params 指定request url的參數(shù),這個(gè)相當(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表達(dá)式,可以參考https://jmespath.org/tutorial.html做詳細(xì)了解;var_name: 存儲(chǔ)提取值的變量名,該變量可以被后續(xù)的steps中直接使用。
.validate 使用jmespath提取json應(yīng)答數(shù)據(jù),并使用.assert_xxx(jmes_path:Text, expected_value:Any)驗(yàn)證期望值。其中jmes_path表示jmespath表達(dá)式; expected_value為預(yù)期值,變量或者函數(shù)表示。如下圖:
image.png