• 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交流群:1121184576
    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交流群:1121184576
    
    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:softvenu_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:softvenu_hrun
    eports20200613T022146.605872.html
    
    

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

  • 相关阅读:
    网络摄像头RTSP协议视频平台EasyNVR升级版本后如何迁移原版数据?
    ubuntu下安装dosbox
    动态数组
    C风格字符串
    指针
    数组
    bitset
    迭代器iterator
    vector
    string--getline(),cctype
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/13111908.html
Copyright © 2020-2023  润新知