zoukankan      html  css  js  c++  java
  • HttpRunner_参数化进阶

    一.获取返回包数据

      在提取参数时,当 HTTP 的请求响应结果为 JSON 格式,则可以采用.运算符的方式,逐级往下获取到参数值;响应结果的整体内容引用方式为 content 或者 body,如上面的content.errorCode

    二.调用其他接口返回值

    (1)前置接口中设置(支持多个)指定的参数
    关键字:extract 参数名:token 参数值:content.token

    extract:
        token: content.token

    (2)引用接口中调用该参数名
    关键字:$参数名

    token: $token

    三.yml文件

    一个接口在testcases目录下建一个yml(json)文件,内部存储该接口的所有测试场景

    四.设置全局变量并引用

    (1)设置全局变量参数
    关键字:variables 参数名:device_sn 参数值:FwgRiO7CNA50DSU

    variables:
        device_sn: FwgRiO7CNA50DSU

    (2)引用接口中调用该参数名
    关键字:$参数名

    device_sn: $device_sn

    五.调用函数

    (1)定义函数
    debugtalk.py中编写函数
    (2)调用函数

    关键字:${函数名($参数)}
    

    举例:debugtalk.py中定义的函数是get_name(n),则引用时是${get_name(1)}

    六.参数化驱动(最简单的方式)

    (1)新建一个存储参数化数据的yml文件,内容如下:

    config:
        name:
    testcases:
        create user $user_id:
    testcase: testcases	est_demo.yml --- 需要执行参数化的用例路径
    parameters:
        user_id: ["index", "index1"] ---需要执行参数话的数据及其参数

    (2)引用参数

    关键字:$参数名
    $user_id

    七.参数化驱动(复杂的方式)  

    注意:从 1.5.11 版本开始,HttpRunner 不再支持测试步骤(teststep)层级的参数化数据驱动,只支持测试用例(testcase)层级的参数化驱动配置,所以下面这种参数化方式已经不支持,比如下图所示:

     
    不支持的方式

    (1)支持的参数化方式有3中
     参数名称的定义分为两种情况:
      a.独立参数单独进行定义;
      b.多个参数具有关联性的参数需要将其定义在一起,采用短横线(-)进行连接。
     数据源指定支持三种方式:
      a.在 YAML/JSON 中直接指定参数列表
      b.通过内置的 parameterize(可简写为P)函数引用 CSV 文件
      c.调用 debugtalk.py 中自定义的函数生成参数列表
    (2)在testsuites目录下新建一个存储参数化数据的yml文件,内容如下:

    config:
        name:
    testcases:
        create user $username-$password:
    testcase: testcases	est_demo.yml
    parameters:
        - index: ["test", "test1"] --- 单一参数列表
        - username-password:
            - ["user1", "111111"]
            - ["user2", "222222"]
            - ["user3", "333333"] --- 多参数列表
        - resName-status: ${P(data/account.csv)} ---外部csv文件

    (3)使用参数

    关键字:$参数名
    /api/main/$index/$username/$password/$resName/$status
    

    (4)运行结果:

    参数化运行结果

    八.使用指定的报告模板+指定报告生成路径

    hrun testcases	est_data.yml --report-template E:/autotest/api_autotest/logs/report.html --report-dir E:/autotest/api_autotest/logs/

    九.保存测试过程数据

      以log日志文件形式保存(此处名字都是一样的,对于多次运行结果会覆盖,可优化)

    hrun testcases	est_data.yml  --save-tests
    (1).XXX.loaded.json:测试用例加载后的数据结构内容,加载包括测试用例文件(YAML/JSON)、debugtalk.py、.env 等所有项目文件
    (2).XXX.parsed.json:测试用例解析后的数据结构内容,解析内容包括测试用例引用(API/testcase)、变量计算和替换、base_url 拼接等
    (3).XXX.summary.json:测试报告生成前的数据结构内容。

    十.单独使用HttpRunner

    (1)新建.py文件,内容如下:

    # coding:utf-8
    from httprunner.api import HttpRunner
    kwargs = {'failfast': False, 'report_dir': 'E:\demo\test'} # 看api.py中__init__方法参数
    runner = HttpRunner(**kwargs)
    result_runner = runner.run('E:\autotest\api_autotest\testcases\test_demo.yml') # 执行指定目录下用例
    print(result_runner) # 输出报告地址
    summary = runner.summary # 获取执行结果,需要在run方法后
    print(summary)

    (2)运行结果如下:

  • 相关阅读:
    Python 6 socket编程
    Python 5 面向对象进阶
    Python 4 面向对象
    Python 3 常用模块
    Python基础 2
    Python基础 1
    Django之会议室预预订
    vscode 修改快捷键 (回到上一处光标位置,下一处光标位置)
    C 库函数
    C 库函数
  • 原文地址:https://www.cnblogs.com/testlearn/p/11378375.html
Copyright © 2011-2022 走看看