API 功能
检索单个列表的详细信息。
API - 检索单个列表的详细信息脚本开发步骤
API规范->业务展示->API测试脚本调试->API测试脚本增强->API测试脚本反向案例扩展->API测试脚本发布
API规范
-
关键请求字段
-
关键响应字段 - 列表的详细信息。
ListingId | Long Integer | 商家信息的 ID。 | |
… | … | … | |
HasBuyNow | Boolean | 表示商品是否有BuyNow标识 | |
… | … | … | |
ShippingOptions | Collection of or null | 运输选项列表。 | |
Method | String or null | 递送方式的名称(例如“NZ Courier”、“Rural Delivery”)。仅当 ShippingType 为自定义时适用。 | |
ShippingId | Long Integer | 运输选项的 ID(在出价或立即购买时使用)。列出项目时不需要。 | |
… | … | … | … |
更多请参考: 检索单个列表的详细信息
-
示例请求
GET https://api.tmsandbox.co.nz/v1/Listings/2149295093.JSON
-
示例响应
{
"ListingId": 2149295093,
...
"AllowsPickups": 3,
"ShippingOptions": [
{
"Type": 4,
"Price": 4.99,
"Method": "nationwide non-rural",
"ShippingId": 4
},
{
"Type": 4,
"Price": 9.99,
"Method": "rural",
"ShippingId": 5
},
{
"Type": 4,
"Price": 0,
"Method": "test free shipping",
"ShippingId": 6
}
],
...
}
业务介绍
-
前端页面 - 项目的详细信息
登录 > 搜索一个种类 > 过滤’buy now' 商品并进入商品详情页面
-
业务范围选择
链式组合交易
检索您赢得的物品 ->从您赢得的物品列表中删除购买 ->常规搜索 ->检索单个列表的详细信息(我在这里) ->使用“立即购买”购买拍卖
从上游交易“从您赢得的物品列表中删除购买 ”中获取具有“立即购买”功能的随机物品 以显示。
从下游交易“使用立即购买购买拍卖 ”的响应中获取随机 “ShippingId” 以使用。
-
业务验证点
检查给定的项目详细信息显示在页面上。
API测试脚本调试
-
在 Postman 的 Authorization 标签中选择 OAuth 1.0 对请求进行授权。
OAuth 1.0 是针对发送前需要授权的交易。模板如下:
如何获取Consumer Key、Consumer Secret、OAuth Token、OAuth Token Secret,请参考**API测试前的准备demo **
-
组装请求 - ‘检索单个列表的详细信息 '
根据 API 规范,参数 - listingId表示要检索的列表 ID。
并且listingId来自上游请求’ General search ‘的响应,并且已经设置为环境变量:{{SingleListingId}}。
所以请求应该是 GET https://api.tmsandbox.co.nz/v1/Listings/{{SingleListingId}}.JSON
-
API连通性
连通性测试通过并获得响应示例。
{
"ListingId": 2149295658,
...
"BuyNowPrice": 13.4400,
...
"HasBuyNow": true,
...
"AllowsPickups": 1,
"ShippingOptions": [
{
"Type": 4,
"Price": 3.5,
"Method": "Tracked metro courier",
"ShippingId": 4
},
{
"Type": 4,
"Price": 5.75,
"Method": "Tracked rural courier",
"ShippingId": 5
},
{
"Type": 2,
"Price": 0,
"Method": "I intend to pick-up",
"ShippingId": 2
}
],
...
}
-
API检查点
检查“检索单个列表的详细信息”功能是否有效,它可以从其响应中优先选择提货选项,以便下游交易“使用立即购买购买拍卖 ”使用。
然后我们根据示例功能得到下面的检查代码片段。
console.log("Post-Transaction: CheckingSingleListingIdDetails Start");
pm.test("CheckingSingleListingIdDetails", function () {
console.log(pm.response.json());
var jsonData = pm.response.json();
var ListingId = jsonData.ListingId;
var ShippingOptions = jsonData.ShippingOptions;
var ShippingIds =[];
var Methods =[];
if(jsonData.HasBuyNow == true){
if (ShippingOptions !== []){
breakloop:{
for (i in ShippingOptions){
// Fetch the ShippingId that the shipping way is pick-up for downstream transaction 'Buy an auction using Buy Now' to use
if(ShippingOptions[i].Method == "I intend to pick-up"){
postman.setEnvironmentVariable('ShippingId', ShippingOptions[i].ShippingId);
postman.setEnvironmentVariable('Method', ShippingOptions[i].Method);
break breakloop;
}
// Fetch random ShippingId only when ShippingMethod has no pick-up option
else{
ShippingIds.push(ShippingOptions[i].ShippingId);
Methods.push(ShippingOptions[i].Method);
postman.setEnvironmentVariable('ShippingIdsCount', ShippingIds.length);
postman.setEnvironmentVariable('ShippingIds', ShippingIds);
// If it has too many ShippingId, to get the randdom ShippingId should better not execute in the loop
var ShippingId=pm.environment.get("ShippingIds").split(",");
var ShippingIdsCount=pm.environment.get("ShippingIdsCount");
var RandShippingOptions = Math.floor(Math.random() * Number(ShippingIdsCount));
postman.setEnvironmentVariable('ShippingId', ShippingIds[RandShippingOptions]);
postman.setEnvironmentVariable('Method', Methods[RandShippingOptions]);
}
}
}
var ShippingId=pm.environment.get("ShippingId");
var Method=pm.environment.get("Method");
console.log("ListingId: "+ListingId +", ShippingId: " + ShippingId +", and Method: " +Method);
}
console.log("Post-Transaction: CheckingSingleListingIdDetails Pass");
}
else{
console.log("Post-Transaction: CheckingSingleListingIdDetails Failed");
}
});
运行脚本以从控制台日志验证检查点是否正常工作。
API 测试脚本增强
增强脚本,如添加事务功能、异常验证、参数化等。
运行最终脚本并从前端页面或控制台日志进行验证。
API 测试脚本否定案例扩展
使用我们在手动测试案例中所做的“等效类划分”和“边界值分析”。
这些API测试脚本都是做反方向的业务,作为上述API正案例的延伸。
API测试脚本发布
当我们完成 API 正面和反面案例时,将脚本从调试文件夹移动到公共文件夹。
然后等待使用 CICD 工具与其他脚本结合发布到 GitHub 特定存储库。