zoukankan      html  css  js  c++  java
  • 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:softuntitled>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:softuntitled
    eports1569141027.html
    

    V1.x版本测试数据csv文件只能与测试用例文件放在同一目录,V2.x版本支持写对路径,以文件路径为基于项目根目录(debugtalk.py 所在路径)的相对路径。如:data/user_id.csv

  • 相关阅读:
    URAL 2067 Friends and Berries (推理,数学)
    URAL 2070 Interesting Numbers (找规律)
    URAL 2073 Log Files (模拟)
    URAL 2069 Hard Rock (最短路)
    URAL 2068 Game of Nuts (博弈)
    URAL 2066 Simple Expression (水题,暴力)
    URAL 2065 Different Sums (找规律)
    UVa 1640 The Counting Problem (数学,区间计数)
    UVa 1630 Folding (区间DP)
    UVa 1629 Cake slicing (记忆化搜索)
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/11567985.html
Copyright © 2011-2022 走看看