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

  • 相关阅读:
    使用批处理查找某个文件夹及其子文件夹(递归地)中存在的空文件夹
    pl/sql连接oracle
    JSON对象转换成url参数
    创建maven工程
    线程同步
    java.lang.Object 的 wait 和 notify方法,及关键字 synchronized的作用
    Thread操作
    java.lang.io包的使用
    用程序打印汉字
    java程序员应该熟练掌握的技术
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/11567985.html
Copyright © 2011-2022 走看看