替换路径中的 ID dredd hooks

replace ID in path dredd hooks

我有这个 dredd.yml 配置文件:

paths:
  "/network":
    get:
      produces:
      - application/json;charset=utf-8
      responses:
        '200':
          description: Ok 
          schema:
            "$ref": "#/definitions/NetworkResponse"
  "/network/{id}":
    get:
      produces: 
        - application/json;charset=utf-8
      parameters:
      - name: id
        in: path
        description: id
        required: true
        type: string
        enum: 
          - "net-76faddf092e62151"
      responses:
        '200':
          description: Ok
          schema:
            "$ref": "#/definitions/NetworkIdResponse"

我想用 python dredd hooks 替换路径中的 {id}。 我试过了:

import json
import dredd_hooks as hooks

response_stash = {}

@hooks.after("Networks > ALL ")
def save_network_id_to_stash(transaction):
    # save HTTP response with IDs to the stash
    response_stash[transaction['id']] = transaction['id']
    print(transaction['id'])

@hooks.before("Networks > ID")
def add_network_id_to_request(transaction):
    parsed_body = json.loads(response_stash['Networks > ALL'])
    network_id = parsed_body['id']
    transaction['fullPath'] = transaction['fullPath'].replace('net-76faddf092e62151', network_id)

测试执行成功,但只有 1 个 ID。 第一个操作的答案输出一个包含对象的列表,其中是 ['id'] 中的 id。 如何替换路径中的 {id} 并对所有网络进行测试?

@hooks.before("Networks > ID > 200 > application/json;charset=utf-8)

钩子名称定义正确。

您可以看到所有变量 transaction['real'] , transaction['name'] 等等 print(transaction) 在钩子函数中。