httprunner框架使用

1、测试用例结构:

(1)一个JSON/YAML文件对应一个测试用例

(2)每个测试用例为一个list of dict结构,其中可能包含全局配置项(config)和若干个测试步骤(test)

(3)config 为全局配置项,作用域为整个测试用例

(4)test 对应单个测试步骤,作用域仅限于本身

2、在测试步骤中提取参数用extract,参数引用用$var

在测试步骤(test)中,若需要从响应结果中提取参数,则可使用 extract 关键字。extract 的列表中可指定一个或多个需要提取的参数。

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

在测试用例中传递参数用exctract关键字,只能从前往后传递

3、变量申明(variables)跟引用($var)。config跟test中均可以用variables定义变量,用$+变量名称引用,其中config为全局变量,test中为本用例变量

4、httprunner支持热加载的插件机制debugtalk.py,在测试用例文件的同级或上级目录中创建debugtalk.py,在其中定义相关变量跟函数,

创建完成后,引用函数的方式为${func($var)}

5、httprunner的主要文件格式:

(1)YAML/JSONL:测试用例文件,存储接口测试相关信息

(2)debugtalk.py:存储相关函数

  • 该文件存在时,将作为项目根目录定位标记,其所在目录即被视为项目工程根目录
  • 该文件不存在时,运行测试的所在路径(CWD)将被视为项目工程根目录
  • 测试用例文件中的相对路径(例如.csv)均需基于项目工程根目录
  • 运行测试后,测试报告文件夹(reports)会生成在项目工程根目

(3).env(可选):存储项目环境变量,通常用于存储项目敏感信息

(4).csv(可选):项目数据文件,用于进行数据驱动

(5)reports:默认生成测试报告的存储文件夹

6、测试用例结构:

 

 

#对应的json结构,test对应单个测试步骤(teststep)
[
  {
    "config": {...}
  },
  {
    "test": {...}
  },
  {
    "test": {...}
  }
]

7、extract:

(1)响应结果为json:采用 . 运算符

(2)响应结果为text/html :采用正则表达式

8、validate:结果的校验项,支持两种格式:

  • {"comparator_name": [check_item, expect_value]}
  • {"check": check_item, "comparator": comparator_name, "expect": expect_value}

9、谷歌定义的yaml格式的文件都必须在冒号后加空格

10、逻辑关系:

 

 (1)接口定义:API的描述应该尽量全面,方便API的独立测试

API的组成:name、variables、request、base_url、validate 等,定义完成后用 hrun get_headers.yml对单个接口进行调试

name: get headers
base_url: http://httpbin.org
variables:
    expected_status_code: 200
request:
    url: /headers
    method: GET
validate:
    - eq: ["status_code", $expected_status_code]
    - eq: [content.headers.Host, "httpbin.org"]

(2)测试用例

①引用接口定义:在teststep步骤中选用API字段引用接口定义,引用方式为API文件的路径

②引用测试用例:在teststep中使用testcase引用测试用例

(3)测试用例集:测试用例为无序的集合,不存在依赖关系,若存在,在测试用例中完成

参数化场景使用parameters完成,覆盖variables 的参数,驱动测试用例的运行

11、httprunner推荐的文件结构

  • debugtalk.py 放置在项目根目录下,假设为 PRJ_ROOT_DIR
  • .env 放置在项目根目录下,路径为 PRJ_ROOT_DIR/.env
  • 接口定义(API)放置在 PRJ_ROOT_DIR/api/ 目录下
  • 测试用例(testcase)放置在 PRJ_ROOT_DIR/testcases/ 目录下
  • 测试用例集(testsuite)文件必须放置在 PRJ_ROOT_DIR/testsuites/ 目录下
  • data 文件夹:存储参数化文件,或者项目依赖的文件,路径为 PRJ_ROOT_DIR/data/
  • reports 文件夹:存储 HTML 测试报告,生成路径为 PRJ_ROOT_DIR/reports/

12、快速创建新项目

hrun --startproject demo

·13、参数机制在 测试用例集中实现

14、数据源的3种方式:

  • 在 YAML/JSON 中直接指定参数列表:该种方式最为简单易用,适合参数列表比较小的情况
  • 通过内置的 parameterize(可简写为P)函数引用 CSV 文件:该种方式需要准备 CSV 数据文件,适合数据量比较大的情况
  • 调用 debugtalk.py 中自定义的函数生成参数列表:该种方式最为灵活,可通过自定义 Python 函数实现任意场景的数据驱动机制,当需要动态生成参数列表时也需要选择该种方式
  • 实现方式
  • config:
        name: "demo"
    
    testcases:
        testcase1_name:
            testcase: /path/to/testcase1
            parameters:
                user_agent: ["iOS/10.1", "iOS/10.2", "iOS/10.3"]
                user_id: ${P(user_id.csv)}
                username-password: ${get_account(10)}

15、笛卡尔组合的结果数量为各个参数数量的乘积

16、HttpRunner 通过复用 Locust,可以在无需对 YAML/JSON 进行任何修改的情况下,直接运行性能测试。

17、参数化使用parameters,采用笛卡尔组合结果对variables中定义的参数进行覆盖

 18、通过times重复执行用例

19、对参数的加解密处理在tearsdown_hoook中处理

 

posted on 2020-03-10 15:01  ChanXM  阅读(1395)  评论(0)    收藏  举报

导航