首页 > 解决方案 > 如何将响应值保存到 Tavern 中的变量?

问题描述

我正在Tavern使用python3. Tavern是基于预定义的yaml文件来测试服务。当向客户端响应自动生成的 id 值时,我有一个后端 API。如何测试自动生成的响应?以及如何保存对变量的响应并将其用于其他测试?

test_name: Test phonebook service

stages:
  - name: Make sure we can create new contact
    request:
     url: http://localhost:8080/v2/contact
     method: POST
     json:
      username: testUser
      first_name: first
      last_name: last
      email: test@email.com
      password: "123456"
      phone: "111111"
    response:
     status_code: 200
     body:
      contact_id: # This is auto generated id from backend

如上例,它向服务器发送一个 POST 请求,并期望在响应中包含 200 个状态码。但我不知道如何检查contact_id哪个是后端生成的整数。另外,我想将contact_id变量保存为其他 API 的输入。

标签: pythontavern

解决方案


它可以通过save在响应中使用来解决,例如:

response:
     status_code: 200
     headers:
      content-type: application/json
     save:
       body:
        contact_id: id

对于tavern >= 1.0,使用json代替body

response:
     status_code: 200
     headers:
      content-type: application/json
     save:
       json:
        contact_id: id

它将响应 json 对象中的 id 值保存到一个名为contact_id. 然后,您可以通过 引用此变量"{contact_id}",或者"{contact_id:d}"如果您想将变量类型转换为“十进制整数”。


推荐阅读