httprunner學習6-參數化(引用外部csv數據)


前言

上一篇已經實現參數化,但是數據是放在.yml文件里面,當測試數據非常多的時候,我們希望把測試數據寫到csv文件。
httprunner==1.5.8

獨立參數

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

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

  • 文件需放置在與測試用例文件相同的目錄中;
  • CSV 文件中的第一行必須為參數名稱,從第二行開始為參數值,每個(組)值占一行;
  • 若同一個 CSV 文件中具有多個參數,則參數名稱和數值的間隔符需實用英文逗號。

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

user_id
1001
1002
...
1999
2000

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

- config:
    parameters:
        - user_id: ${parameterize(user_id.csv)}
        - user_id: ${P(user_id.csv)}    # 簡寫方式

csv文件存放user數據

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

user_name.csv文件測試數據

user
test1
test2
test3
test4

user_name.csv文件和test_param_csv.yml文件放到同一目錄,引用csv文件語法${P(user_name.csv)}

# 上海悠悠,QQ交流群:750815713
- config:
    name: logincase
    parameters:
        - user: ${P(user_name.csv)}    # 參數化
    variables:
        psw: 123456
- test:
    name: login case1
    request:
        url: http://127.0.0.1:8000/api/v1/login/
        method: POST
        headers:
            Content-Type: application/json
            User-Agent: python-requests/2.18.4
        json:
            username: $user
            password: $psw
    extract:
        - token: content.token         # 提取token
    validate:
        - eq: [status_code, 200]
        - eq: [headers.Content-Type, application/json]
        - eq: [content.msg, login success!]
        - eq: [content.code, 0]

csv存放user和psw數據

user_psw.csv文件測試數據

user,psw
test1,123456
test2,123456
test3,123456
test4,123456

test_param_csv_psw.yml文件和user_psw.csv測試數據放在同一目錄下

# 上海悠悠,QQ交流群:750815713
- config:
    name: logincase
    parameters:
        - user-psw: ${P(user_psw.csv)} # 參數化
- test:
    name: login case1
    request:
        url: http://127.0.0.1:8000/api/v1/login/
        method: POST
        headers:
            Content-Type: application/json
            User-Agent: python-requests/2.18.4
        json:
            username: $user
            password: $psw
    extract:
        - token: content.token         # 提取token
    validate:
        - eq: [status_code, 200]
        - eq: [headers.Content-Type, application/json]
        - eq: [content.msg, login success!]
        - eq: [content.code, 0]

運行結果

cmd執行hrun test_param_csv_psw.yml

D:\soft\untitled>hrun test_param_csv_psw.yml
login case1
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 529.26 ms, response_length: 110 bytes
INFO     start to extract from response object.
INFO     start to validate.
.
login case1
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 428.52 ms, response_length: 110 bytes
INFO     start to extract from response object.
INFO     start to validate.
.
login case1
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 438.94 ms, response_length: 110 bytes
INFO     start to extract from response object.
INFO     start to validate.
.
login case1
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 350.67 ms, response_length: 110 bytes
INFO     start to extract from response object.
INFO     start to validate.
.

----------------------------------------------------------------------
Ran 4 tests in 1.766s

OK
INFO     Start to render Html report ...
INFO     Generated Html report: D:\soft\untitled\reports\1569141027.html

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


免責聲明!

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



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