API 功能
使用“立即购买”购买商品。
API - 使用“立即购买”购买拍卖脚本开发步骤
API规范->业务展示->API测试脚本调试->API测试脚本增强->API测试脚本反向案例扩展->API测试脚本发布
API规范
-
关键请求字段
-
关键响应字段 - Buy Now 请求的详细信息。
Success | Boolean | 指示操作是否成功。 | |
Description | String or null | 错误的描述,如果操作失败。 | |
StatusCode | Enumeration | 立即购买请求的状态。 | |
Success | 0 | 竞标成功。 | |
… | … | … | … |
PurchaseId | Long Integer | 刚刚购买的 ID。 | |
… | … | … | … |
More refer to: Buy an auction using Buy Now
-
示例请求
POST https://api.tmsandbox.co.nz/v1/Bidding/BuyNow.JSON
{
“ListingId”:2149302816,
“ShippingOption”:2
}
-
示例响应
{
"Success": true,
"Description": "Seller's email owen4@snipesoft.net.nz",
"StatusCode": 0,
"PurchaseId": 26231
}
业务介绍
-
前端页面 - 商品详情页面点击“立即购买”按钮。
登录 > 搜索一个种类 > 过滤’buy now' 商品并进入商品详情页面 > 单击’Buy Now' > 选择运输方式并确认购买
-
前端页面-确认购买页面
-
前端页面 - 购买详情页面
-
业务范围选择
链式组合交易
检索您赢得的物品 ->从您赢得的物品列表中删除购买 ->通用搜索 ->检索单个列表的详细信息 ->使用“立即购买”购买拍卖(我在这里)
从上游事务“通用搜索 ”的响应中获取“ListingId”作为请求字段之一。
从上游交易“检索单个列表的详细信息 ”的响应中获取“ShippingId” 作为请求字段之一。
-
业务验证点
检查给定的项目详细信息显示在页面上。
API测试脚本调试
-
在 Postman 的 Authorization 标签中选择 OAuth 1.0 对请求进行授权。
OAuth 1.0 是针对发送前需要授权的交易。模板如下:
如何获取Consumer Key、Consumer Secret、OAuth Token、OAuth Token Secret,请参考API测试前的准备demo
-
组合请求 - ‘使用 Buy Now 购买拍卖 '
根据 API 规范,参数 - ListingId表示 Buy Now 请求所针对的列表的 ID。
并且listingId来自上游请求’ General search ‘的响应,并且已经设置为环境变量:{{SingleListingId}}。
根据 API 规范,参数 - ShippingOption表示如果立即购买请求成功将使用的首选运输选项的 ID。此 ID 可从商品详情中的 ShippingId 字段中检索。
来自上游请求“从您赢得的商品列表中删除购买 ”的响应的 ShippingOption 来源 ,并且它已经设置为环境变量:{{ShippingId}}。
所以请求应该是https://api.tmsandbox.co.nz/v1/Bidding/BuyNow.JSON
-
API连通性
连通性测试通过并获得响应示例。
{
"Success": true,
"Description": "Seller's email mp70@abcde.com",
"StatusCode": 0,
"PurchaseId": 26262
}
-
API检查点
检查“使用立即购买购买拍卖”功能是否有效,可以成功将物品购买到赢得的物品列表中。
然后我们根据示例功能得到下面的检查代码片段。
// Check BuyNow operation is sucessful
console.log("Post-Transaction: CheckingBuyNow Start");
pm.test("CheckingBuyNowSuccess", function () {
console.log(pm.response.json());
var jsonData = pm.response.json();
var Success = jsonData.Success;
var StatusCode = jsonData.StatusCode;
var PurchaseId= jsonData.PurchaseId;
postman.setEnvironmentVariable('BuyNowPurchaseId', PurchaseId);
if(Success == true && StatusCode == 0){
console.log("Get sucessful StatusCode: " +StatusCode+" (0-Success)");
console.log("Post-Transaction: CheckingBuyNow Pass");
}
else{
//0-Success, 1-None, 2-ReserveMet, ..., 42-AutoBidDecreased
console.log("Get failed StatusCode: " +StatusCode);
var Description = jsonData.Description;
console.log("Failed Description: " +Description);
console.log("Post-Transaction: CheckingBuyNow Failed");
}
});
console.log("Post-Transaction: CheckingPurchasedItemOnWonList Start");
const post_request = {
url: pm.environment.get("BaseUrl")+'/v1/MyTradeMe/Won/All.JSON',
method: 'GET',
header:['Content-Type:application/json', 'Authorization:OAuth oauth_consumer_key="4B34BCCFD24CF3497EE36E54204AA7E2",oauth_token="38B073E4F6C65F722A0CF964492EA6A2",oauth_signature_method="PLAINTEXT",oauth_timestamp="1623834029",oauth_nonce="Zr5dzIAuVON",oauth_version="1.0",oauth_signature="0D8635F6A51F0EA381A8D97F5D7812E2%26293BD08354D18D33871C4EBB02D67ACA"'],
body: {
}
};
// setTimeout(()=>{
pm.sendRequest(post_request, function (err, response) {
if (err) {
console.log(err);
console.log("Post-Transaction: CheckingPurchasedItemOnWonList Failed");
}
else {
// Confirm whether PurchaseId of new buy item existed on the won list.
pm.test("Checking NewPurchasedListId existed in the won list", function () {
console.log(response.json());
var jsonData = response.json();
var Listdata = jsonData['List'];
var SingleListingId = pm.environment.get("SingleListingId");
var BuyNowPurchaseId = pm.environment.get("BuyNowPurchaseId");
breakloop:{
for(var i = 0; i < Listdata.length; i++) {
// console.log("ListingId: " + Listdata[i].ListingId + ", PurchaseId: " + Listdata[i].PurchaseId);
if (SingleListingId == Listdata[i].ListingId && BuyNowPurchaseId == Listdata[i].PurchaseId){
console.log("Found PurchaseId " +BuyNowPurchaseId +" and ListingId "+SingleListingId + " exists on the won list");
console.log("Post-Transaction: CheckingPurchasedItemOnWonList Pass");
break breakloop;
}
}
if (i==0){
console.log("Not Found any PurchaseId and ListingId exist on the won list.");
console.log("Post-Transaction: CheckingPurchasedItemOnWonList Failed");
}
else{
console.log("The purchased item hasn't been shown on the won list page, please waiting 60 seconds to check again.");
console.log("Post-Transaction: CheckingPurchasedItemOnWonList Failed");
}
}
});
}
});
// }, 70000);
运行脚本以从控制台日志验证检查点是否正常工作。
API 测试脚本增强
-
增强脚本,如添加事务功能、异常验证、参数化等。
-
运行最终脚本并从前端页面或控制台日志进行验证。
在“立即购买”操作之前,请查看商品详情。
在“立即购买”操作后,查看商品详情。
在“立即购买”操作后,查看赢得的项目列表。
API 测试脚本否定案例扩展
使用我们在手动测试案例中所做的“等效类划分”和“边界值分析”。
这些API测试脚本都是做反方向的业务,作为上述API正案例的延伸。
API测试脚本发布
当我们完成 API 正面和反面案例时,将脚本从调试文件夹移动到公共文件夹。
然后等待使用 CICD 工具与其他脚本结合发布到 GitHub 特定存储库。