HttpRunner_參數化進階


一.獲取返回包數據

  在提取參數時,當 HTTP 的請求響應結果為 JSON 格式,則可以采用.運算符的方式,逐級往下獲取到參數值;響應結果的整體內容引用方式為 content 或者 body,如上面的content.errorCode

二.調用其他接口返回值

(1)前置接口中設置(支持多個)指定的參數
關鍵字:extract 參數名:token 參數值:content.token

extract:
    token: content.token

(2)引用接口中調用該參數名
關鍵字:$參數名

token: $token

三.yml文件

一個接口在testcases目錄下建一個yml(json)文件,內部存儲該接口的所有測試場景

四.設置全局變量並引用

(1)設置全局變量參數
關鍵字:variables 參數名:device_sn 參數值:FwgRiO7CNA50DSU

variables:
    device_sn: FwgRiO7CNA50DSU

(2)引用接口中調用該參數名
關鍵字:$參數名

device_sn: $device_sn

五.調用函數

(1)定義函數
debugtalk.py中編寫函數
(2)調用函數

關鍵字:${函數名($參數)}

舉例:debugtalk.py中定義的函數是get_name(n),則引用時是${get_name(1)}

六.參數化驅動(最簡單的方式)

(1)新建一個存儲參數化數據的yml文件,內容如下:

config:
    name:
testcases:
    create user $user_id:
testcase: testcases\test_demo.yml --- 需要執行參數化的用例路徑
parameters:
    user_id: ["index", "index1"] ---需要執行參數話的數據及其參數

(2)引用參數

關鍵字:$參數名
$user_id

七.參數化驅動(復雜的方式)  

注意:從 1.5.11 版本開始,HttpRunner 不再支持測試步驟(teststep)層級的參數化數據驅動,只支持測試用例(testcase)層級的參數化驅動配置,所以下面這種參數化方式已經不支持,比如下圖所示:

 
不支持的方式

(1)支持的參數化方式有3中
 參數名稱的定義分為兩種情況:
  a.獨立參數單獨進行定義;
  b.多個參數具有關聯性的參數需要將其定義在一起,采用短橫線(-)進行連接。
 數據源指定支持三種方式:
  a.在 YAML/JSON 中直接指定參數列表
  b.通過內置的 parameterize(可簡寫為P)函數引用 CSV 文件
  c.調用 debugtalk.py 中自定義的函數生成參數列表
(2)在testsuites目錄下新建一個存儲參數化數據的yml文件,內容如下:

config:
    name:
testcases:
    create user $username-$password: testcase: testcases\test_demo.yml parameters: - index: ["test", "test1"] --- 單一參數列表 - username-password: - ["user1", "111111"] - ["user2", "222222"] - ["user3", "333333"] --- 多參數列表 - resName-status: ${P(data/account.csv)} ---外部csv文件

(3)使用參數

關鍵字:$參數名
/api/main/$index/$username/$password/$resName/$status

(4)運行結果:

參數化運行結果

八.使用指定的報告模板+指定報告生成路徑

hrun testcases\test_data.yml --report-template E:/autotest/api_autotest/logs/report.html --report-dir E:/autotest/api_autotest/logs/

九.保存測試過程數據

  以log日志文件形式保存(此處名字都是一樣的,對於多次運行結果會覆蓋,可優化)

hrun testcases\test_data.yml  --save-tests
(1).XXX.loaded.json:測試用例加載后的數據結構內容,加載包括測試用例文件(YAML/JSON)、debugtalk.py、.env 等所有項目文件
(2).XXX.parsed.json:測試用例解析后的數據結構內容,解析內容包括測試用例引用(API/testcase)、變量計算和替換、base_url 拼接等
(3).XXX.summary.json:測試報告生成前的數據結構內容。

十.單獨使用HttpRunner

(1)新建.py文件,內容如下:

# coding:utf-8
from httprunner.api import HttpRunner
kwargs = {'failfast': False, 'report_dir': 'E:\\demo\\test'} # 看api.py中__init__方法參數
runner = HttpRunner(**kwargs)
result_runner = runner.run('E:\\autotest\\api_autotest\\testcases\\test_demo.yml') # 執行指定目錄下用例
print(result_runner) # 輸出報告地址
summary = runner.summary # 獲取執行結果,需要在run方法后
print(summary)

(2)運行結果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM