httprunner参数调用样例及其他说明

HttpRunner 中,如果你需要在多个用例中使用同一个响应体(比如获取 token 或者其他在第一个用例中提取的数据),此文提供以下思路:

一、通过 variablesextract 共享数据

1.1. 步骤概述
  • 在第一个用例中获取 token(通过 extract 提取)。
  • 在后续的用例中引用该 token
1.2. 示例:使用 extract 提取并在多个步骤中共享 token
# config部分可以用来设置公共变量和配置
config:
  name: API Test Suite
  variables:
    # 在这里初始化一些变量,假设你有多个用例,某些数据需要共享
    auth_token: ""

teststeps:
  - name: Step 1: Get Token
    request:
      method: POST
      url: https://api.example.com/login
      json:
        username: "user1"
        password: "password123"
    extract:
      token: content.token  # 提取token到变量
    validate:
      - eq:
          - status_code
          - 200

  - name: Step 2: Use Token to Get User Info
    request:
      method: GET
      url: https://api.example.com/user/profile
      headers:
        Authorization: "Bearer ${token}"  # 使用从步骤1提取的token
    validate:
      - eq:
          - status_code
          - 200
      - eq:
          - content.user_id
          - "user1"

  - name: Step 3: Another Request Using Token
    request:
      method: GET
      url: https://api.example.com/orders
      headers:
        Authorization: "Bearer ${token}"  # 使用token继续后续请求
    validate:
      - eq:
          - status_code
          - 200
1.3. 解释:
  • 第一个测试步骤 Step 1 会通过 POST 请求获取一个 token,并用 extract 提取 token 值存储到变量 token 中。
  • 在后续的步骤中,直接使用 ${token} 来引用提取的 token,例如在请求头中传递 Authorization

二、通过 pre-request 步骤提取并共享数据

2.1. 步骤概述
  • 将获取 token 的逻辑提取到一个 pre-request 步骤中,然后在后续测试用例中通过 variables 调用共享的 token
2.2. 示例:使用 pre-request 提前获取 token 并共享
config:
  name: API Test Suite
  variables:
    # 假设你会在 pre-request 步骤中设置这个变量
    auth_token: ""

teststeps:
  - name: Pre-request to Get Token
    request:
      method: POST
      url: https://api.example.com/login
      json:
        username: "user1"
        password: "password123"
    extract:
      token: content.token  # 提取token到变量
    store:
      auth_token: ${token}  # 存储token到 config 变量中

  - name: Step 1: Use Token to Get User Info
    request:
      method: GET
      url: https://api.example.com/user/profile
      headers:
        Authorization: "Bearer ${auth_token}"  # 使用pre-request提取的token
    validate:
      - eq:
          - status_code
          - 200

  - name: Step 2: Another Request Using Token
    request:
      method: GET
      url: https://api.example.com/orders
      headers:
        Authorization: "Bearer ${auth_token}"  # 使用同样的token继续请求
    validate:
      - eq:
          - status_code
          - 200
2.3. 解释:
  • Pre-request 步骤会在所有请求执行之前获取 token,并使用 extract 提取 token 值。
  • store 将提取的数据存储到 config.variables 中(例如,auth_token)。
  • 后续的所有请求可以使用 ${auth_token} 来访问之前提取的 token,确保所有测试步骤使用相同的授权 token

三、其他说明

我在使用httprunner生成用例后执行,发现使用了多个url后生成了一个yml文件,我的惯性思维是一个文件中有很多用例,所以在执行此yml文件完成时,提示1pass的,这个问题困扰了我,最后才发现这个里面时teststeps是生成了一个用例的多个步骤,这其实也是我之前的思考习惯导致的,也就是直接就开干,然后解决我脑中的预期问题,其实人家本来设计如此,而在自己给自己制造问题,如果第一时间看清楚yml内容则不回存在:

httprunner参数调用样例及其他说明_第1张图片

httprunner在实际调用过程执行yml写入多个用例并调用的方式,类似这种方式:

config:
  name: 获取“member”
 
testcases:
  testcase 1:
    name: 获取“token”
    testcase: test01_get_token.yml
  
  testcase 2:
    name: 获取“member”
    testcase: test02_get_memeber.yml

具体使用参看httprunner的使用文档:

欢迎使用 HttpRunner | HttpRunner

你可能感兴趣的:(测试,java,开发语言)