httprunner 2.x學習7-參數化(引用外部csv數據)


前言

httprunner 參數化數據源指定支持三種方式:

  • 在 YAML/JSON 中直接指定參數列表:該種方式最為簡單易用,適合參數列表比較小的情況
  • 通過內置的 parameterize(可簡寫為P)函數引用 CSV 文件:該種方式需要准備 CSV 數據文件,適合數據量比較大的情況
  • 調用 debugtalk.py 中自定義的函數生成參數列表:該種方式最為靈活,可通過自定義 Python 函數實現任意場景的數據驅動機制,當需要動態生成參數列表時也需要選擇該種方式

環境:httprunner==2.5.7

本篇講解內置的 parameterize(可簡寫為P)函數引用 CSV 文件

獨立參數

對於已有參數列表,並且數據量比較大的情況,比較適合的方式是將參數列表值存儲在 CSV 數據文件中。

對於 CSV 數據文件,需要遵循如下幾項約定的規則:

  • CSV 文件中的第一行必須為參數名稱,從第二行開始為參數值,每個(組)值占一行;
  • 若同一個 CSV 文件中具有多個參數,則參數名稱和數值的間隔符需實用英文逗號;
  • 在 YAML/JSON 文件引用 CSV 文件時,文件路徑為基於項目根目錄(debugtalk.py 所在路徑)的相對路徑。

例如,user_id 的參數取值范圍為 1001~2000,那么我們就可以創建 user_id.csv,並且在文件中按照如下形式進行描述。

user_id
1001
1002
...
1999
2000

然后在 YAML/JSON 測試用例文件中,就可以通過內置的 parameterize(可簡寫為 P)函數引用 CSV 文件。

config:
    name: "demo"

testcases:
    testcase1_name:
        testcase: /path/to/testcase1
        parameters:
            user_id: ${P(data/user_id.csv)}

即 P 函數的參數(CSV 文件路徑)是相對於項目根目錄的相對路徑。
當然,這里也可以使用 CSV 文件在系統中的絕對路徑,不過這樣的話在項目路徑變動時就會出現問題,因此推薦使用相對路徑的形式。

csv文件存放user數據

先准備測試數據,准備四組登錄用的賬號和密碼,賬號為test1,test2,test3,test4,密碼統一設置為123456。

data/user_name.csv文件測試數據

user
test1
test2
test3
test4

testsuites/test_param_csv.yml 文件引用 data/user_name.csv 文件語法${P(user_name.csv)}

# testsuites/test_param_csv.yml
# 上海-悠悠,httprunner QQ交流群:717225969
config:
    name: "test login parameters"

testcases:
   login-參數化:
        testcase: case/test_login.yml
        parameters:
            user: ${P(data/user_name.csv)}

csv存放user和psw數據

data/user_password.csv 文件測試數據

user,password
test1,123456
test2,123456
test3,123456
test4,123456

testsuites/test_param_csv.yml文件引用 data/user_password.csv 文件

# testsuites/test_param_csv.yml
# 上海-悠悠,httprunner QQ交流群:717225969

config:
    name: "test login parameters"

testcases:
   login-參數化:
        testcase: case/test_login.yml
        parameters:
            user-password: ${P(data/user_password.csv)}

運行結果

cmd執行hrun testsuites/test_param_csv.yml

(venv_hrun) D:\soft\venu_hrun>hrun testsuites/test_param_csv.yml
INFO     HttpRunner version: 2.5.7
INFO     Start to run testcase: login-參參數數化化
login-setup
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 338.0 ms, response_length: 110 bytes

.

----------------------------------------------------------------------
Ran 1 test in 0.354s

OK
INFO     Start to run testcase: login-參參數數化化
login-setup
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 331.52 ms, response_length: 110 bytes

.

----------------------------------------------------------------------
Ran 1 test in 0.332s

OK
INFO     Start to run testcase: login-參參數數化化
login-setup
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 316.43 ms, response_length: 110 bytes

.

----------------------------------------------------------------------
Ran 1 test in 0.316s

OK
INFO     Start to run testcase: login-參參數數化化
login-setup
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 300.28 ms, response_length: 110 bytes

.

----------------------------------------------------------------------
Ran 1 test in 0.300s

OK
INFO     Start to render Html report ...
INFO     Generated Html report: D:\soft\venu_hrun\reports\20200613T022146.605872.html

V1.x版本測試數據csv文件只能與測試用例文件放在同一目錄,V2.x版本支持相對路徑,以文件路徑為基於項目根目錄(debugtalk.py 所在路徑)的相對路徑。如:data/user_id.csv


免責聲明!

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



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