zoukankan      html  css  js  c++  java
  • HttpRunner学习7--引用CSV文件数据

    前言

    在之前的文章中,我们已经学习了 parameters 参数化,是在测试脚本中直接指定参数列表。这种方法简单易用,但如果我们的参数列表数据比较多,这种方法可能就不太适合了。

    当数据量比较大的时候,我们希望可以把测试数据写到 CSV 文件中,然后直接引用 CSV 文件数据。

    本人环境:HttpRunner V1.5.8

    测试场景

    登录接口文档说明:http://doc.nnzhp.cn/index.php?s=/6&page_id=12

    我们继续以之前的登录接口来学习,如果直接在 YAML/JSON 脚本中指定参数列表内容,那么我们的用例可能就是这样的:

    - config:
        name: parameters test
        request:
          base_url: http://api.nnzhp.cn
        parameters:
          - username-passwd:
              - ["niuhanyang", "aA123456"]
              - ["test10101", "fasdfasfa"]
              - ["test1010", "aA123456"]
    
    - test:
        name: login case
        request:
          url: /api/user/login
          method: POST
          headers:
            Content-Type: application/x-www-form-urlencoded
            User-Agent: Fiddler
          data:
            username: $username
            passwd: $passwd
        validate:
          - eq: [status_code, 200]
          - eq: [content.error_code, 0]
    

    上面的用例,只有 3 组测试数据,当我们有10、100组测试数据,如果直接写在测试脚本中,可能会很不方便。我们可以把这些测试数据都写到CSV文件,然后直接引用CSV文件,这样就方便多了,我们的脚本也显得更加简洁。

    CSV中存放单个参数

    对于 CSV 数据文件,需要遵循如下几项约定的规则:

    • 文件需放置在与测试用例文件相同的目录中;
    • CSV 文件中的第一行必须为参数名称,从第二行开始为参数值,每个(组)值占一行;
    • 若同一个 CSV 文件中具有多个参数,则参数名称和数值的间隔符需实用英文逗号。

    比如,我们有多组登录的数据,用户名都不一样,但密码都是一样的,我们就可以创建 username.csv,并把 用户名 这一参数写到 username.csv 中,如下:

    username
    niuhanyang
    test10101
    test1010
    

    然后在 YAML/JSON 测试用例中,就可以通过 HttpRunner 内置的 parameterize(可简写为P)函数引用 CSV 文件。

        parameters:
          - username: ${P(username.csv)} # 或者 ${parameterize(username.csv)}
          - passwd: ["aA123456"]
    

    注意:HttpRunner中,在 parameters 中指定的参数名称必须与 CSV 文件中第一行的参数名称一致。

    CSV中存放多个参数

    对于具有关联性的多个参数,比如,我们有多组登录的数据,用户名和密码都不一样,那么我们可以创建 user.csv ,并把用户名和密码的参数写到 user.csv 中,如下:

    username,passwd
    niuhanyang,aA123456
    test10101,fasdfasfa
    test1010,aA123456
    

    再修改一下 YAML 脚本:

        parameters:
          - username-passwd: ${P(user.csv)} # 或者 ${parameterize(user.csv)}
    

    注意:上面的写法是用户名密码一对一的关系,如果是按下面这样写,那就会是笛卡尔积组合的情况,产生 3 * 3 = 9 种组合。

        parameters:
          - username: ${P(user.csv)}
          - passwd: ${P(user.csv)}
    

    另外,在测试脚本中指定参数时,可以只使用部分参数,并且参数顺序无需与 CSV 文件中参数名称的顺序一致。

    运行用例

    完整的YAML格式用例(test_csv.yml):

    - config:
        name: parameters test
        request:
          base_url: http://api.nnzhp.cn
        parameters:
          - username-passwd: ${P(user.csv)} # 或者 ${parameterize(user.csv)}
    
    - test:
        name: login case
        request:
          url: /api/user/login
          method: POST
          headers:
            Content-Type: application/x-www-form-urlencoded
            User-Agent: Fiddler
          data:
            username: $username
            passwd: $passwd
        validate:
          - eq: [status_code, 200]
          - eq: [content.error_code, 0]
    

    在HttpRunner 1.x版本中,引用 CSV 数据文件(如 user.csv),需要将 user.csv 和 test_csv.yml 放在同一目录下,然后在运行用例即可。运行用例后的报告如下:

    引用 CSV 数据文件的测试报告

  • 相关阅读:
    Spring boot3之整合HTML
    Spring boot4之数据校验
    Spring boot5之整合mybatis
    Spring boot6之整合Spring Data JPA
    Spring boot7之整合Spring Data Redis
    Spring boot8之整合Spring Security
    sqlmap从入门到精通-第七章-7-11 绕过WAF脚本-informationschemacomment.py&least.py
    系统提权-各种反弹shell使用
    Vulnhub-靶机-SpyderSec: Challenge
    sqlmap从入门到精通-第七章-7-10 绕过WAF脚本-ifnull2casewhenisnull.py&ifnull2ifisnull.py
  • 原文地址:https://www.cnblogs.com/wintest/p/11885265.html
Copyright © 2011-2022 走看看