python、postman、jmeter将上一个接口返回值作为下一个接口的请求参数实战

python进行接口请求,第一个接口返回的数据作为第二个参数的入参

#!/usr/bin/python
# -*- coding:utf-8 -*-
import jsonpath
import requests

# 获取可以预订列表
host = 'http://cn.ejee.site'
queryReserveListPath = '/api/booking/queryReserveList.do'
bookingChannelPath = '/api/booking/channels'
url1 = host + queryReserveListPath
data1 = {
    'clientId': 'jie',
    'sign': '45b4cd33de5106aa9241108268fbb97a',
    'type': 'PreRelease',
    'channel': 'GuoYu'
}
r1 = requests.post(url=url1, data=data1)

print(r1.text)
responseDomain = jsonpath.jsonpath(r1.json(), "$..domain")[0]

# 获取预订通道
url2 = host + bookingChannelPath
data2 = {
    'clientId': 'jie',
    'sign': '5bb7d0e90185fb270b9ef91c1d739f09',
    'domain': responseDomain
}
r2 = requests.post(url=url2, data=data2)
print(r2.text)

返回数据结果:

$ pytest -s tests/test_case.py 
=========================================================================== test session starts ============================================================================
platform darwin -- Python 3.7.4, pytest-6.0.1, py-1.9.0, pluggy-0.13.1
rootdir: /Users/leiyuxing/pytest, configfile: pytest.ini
collecting ... 获取可预订列表{"pageSize":20,"totalPageNum":1,"totalItemNum":1,"currentPageNum":1,"data":[{"domain":"testdomainadd0002.com","bookEndTime":"2021-01-20 22:50:0e":"PreRelease","deleteTime":"2020-08-11","channels":[{"id":"91","name":"GuoYu","price":1.0,"transferPrice":69.0}],"_map":{}}],"code": "200","msg": "操作成功"}
获取预订通道{"msg":"成功","channelList":[{"price":1,"name":"GuoYu","currency":"RMB","freezePrice":50,"id":"91","partnerType":"PreRelease"}],"code":"200","domain":"testdomai.com"}
collected 0 items                                                                                                                                                          

========================================================================== no tests ran in 0.24s ===========================================================================
(python3.7)

postman之上一个接口的返回值作为下一个接口的入参

在使用postman做接口测试的时候,在多个接口的测试中,如果需要上一个接口的返回值作为下一个接口的入参,其基本思路是:

1、获取上一个接口的返回值

2、将返回值设置成环境变量或者全局变量

3、设置下一个接口的参数形式

例子:

场景,需要在获取可预订列表接口的返回值中提取可预订的域名,获取预订通道接口查询该域名的通道结果

1、第一个接口用户获取domain。

2、第二个接口用户设置菜单栏。

在这两个接口中,我们需要将第一个接口返回的domain值作为第一个接口的其中一个参数。

将第一个接口的返回值设置为环境变量
第一个接口发送返回值如下:

在第一个接口的tests中,获取domain,并将其设置为环境变量,代码如下:

// 将数据解析成json格式
var jd = JSON.parse(responseBody);


// 获取domain值
var domain_data = jd.data[0].domain
 
// 设置成环境变量
pm.environment.set("domain_data",domain_data);
// 第一个接口请求成功之后可以看到,该环境变量生成,可以再环境变量中看到。

// 在第二个接口,用{
   
   {domain_data}}就可以获取domain_data值


对于需要获取的值使用{ {}}设置及时获取环境变量或者全局变量的值,

设置完成之后,如果两个接口在同一个文件下,那么点击runner,只需要执行一次就可以完成两个接口的请求啦;

注意:

两个接口要在同一个环境下哟,不然第二个接口找不到值啦。

返回结果:

{
    "msg": "成功",
    "channelList": [
        {
            "price": 1,
            "name": "GuoYu",
            "currency": "RMB",
            "freezePrice": 50,
            "id": "91",
            "partnerType": "PreRelease"
        }
    ],
    "code": "200",
    "domain": "testdomainadd0002.com"
}

jmeter将上一个接口返回值作为下一个接口的请求参数

请参考:

https://blog.csdn.net/LYX_WIN/article/details/108082933

https://blog.csdn.net/LYX_WIN/article/details/108128295

猜你喜欢

转载自blog.csdn.net/LYX_WIN/article/details/108264004