API 功能
从经过身份验证的用户的监视列表中删除列表。
API - 从监视列表脚本开发步骤中删除列表
API规范->业务展示->API测试脚本调试->API测试脚本增强->API测试脚本反向案例扩展->API测试脚本发布
API规范
-
关键请求字段
-
关键响应字段 - 有关操作是否成功的详细信息。
尝试删除不存在或不在监视列表中的拍卖不会产生错误。
Success | Boolean | 指示操作是否成功。 |
Description | String or null | 错误的描述,如果操作失败。 |
更多 API 规范是指从您的监视列表中删除列表 。
-
示例请求
DELETE https://api.tmsandbox.co.nz/v1/MyTradeMe/WatchList/0000000000.JSON
-
示例响应
{
"Success": true,
"Description": "Success"
}
业务介绍
-
前端页面 - 关注列表页面
登录 > Watchlist > View Watchlist > Delete > Confirm to delete
-
前端页面 - 确认删除项目页面
-
业务范围选择
链式组合交易
检索您的监视列表 ->从您的监视列表中删除列表(我在这里) ->检索即将关闭的列表 ->将列表添加到您的监视列表
从上游事务“检索您的监视列表 ”的响应中获取所有“ListingId ”作为请求字段。
前置请求 ‘从您的监视列表中删除一个列表 ' 从 监视列表中删除所有 ListingId 但留下最后一个。
从监视列表中删除最后一个 ListingId。
-
业务验证点
检查监视列表中的所有项目已被删除。
API测试脚本调试
-
组装前置请求“检索您的监视列表 ”和“从您的监视列表中删除列表 ”
前置求脚本的主要编码逻辑如下:
1.前置请求 API - 检索您的监视列表以获取监视列表中的所有项目。
console.log("Pre-Transaction: RetrieveYourWatchlist Start");
// oauth_signature = Consumer Secret%26OAuth Token Secret
const pre_request_retrieveyourwatchlist = {
url: pm.environment.get("BaseUrl") + '/v1/MyTradeMe/Watchlist/All.JSON',
method: 'GET',
header:['Content-Type:application/json', 'Authorization:OAuth oauth_consumer_key="your Consumer Key",oauth_token="your OAuth Token",oauth_signature_method="PLAINTEXT",oauth_timestamp="1623834029",oauth_nonce="Zr5dzIAuVON",oauth_version="1.0",oauth_signature="your Consumer Secret%26your OAuth Token Secret"'],
body: {
}
};
...
注意:如何获取Consumer Key、Consumer Secret、OAuth Token、OAuth Token Secret,请参考API测试前的准备demo
2.所有获取的项目都应该排除那些字段是 ‘BidCount’ = 1 以获取允许从监视列表中删除的所有项目。‘BidCount’ 字段表示该项目已被投标,无法从监视列表中删除。
pm.sendRequest(pre_request_retrieveyourwatchlist, function (err, response) {
if (err) {
console.log(err);
console.log("Pre-Transaction: RetrieveYourWatchlist Failed");
}
else {
// Get all ListingId on the Watchlist
pm.test("Get all ListingId on the Watchlist", function () {
var jsonData = response.json();
var Listdata = jsonData['List'];
var arr = [];
for (i = 0; i < Listdata.length; i++) {
// bidding items can't be deleted, need to exclude them
if (Listdata[i].BidCount != 1) {
arr.push(Listdata[i].ListingId);
}
}
postman.setEnvironmentVariable('WatchlistListingIdCount', arr.length);
if(arr.length < 1){
var WatchlistListingIdCount = pm.environment.get("WatchlistListingIdCount");
console.log("WatchlistListingIdCount: " +WatchlistListingIdCount + ", nothing items need to be deleted.");
}
else {
postman.setEnvironmentVariable('WatchlistListingId', arr);
var WatchlistListingId = pm.environment.get("WatchlistListingId");
console.log(All the can be deleted ListingId on the Watchlist: ");
console.log(WatchlistListingId);
}
console.log("Pre-Transaction: RetrieveYourWatchlist Pass");
});
...
3.如果从监视列表中提取的项目 <=0,则监视列表中没有项目。只需启动一个无意义的’ListingId’。
var WatchlistListingIdCount = pm.environment.get("WatchlistListingIdCount");
var WatchlistListingId = pm.environment.get("WatchlistListingId").split(",");
if (WatchlistListingIdCount <= 0) {
//Grant a meaningless value to LastListingId
postman.setEnvironmentVariable('LastListingId', "0000000000");
}
...
4.如果从监视列表中提取的项目 =1,则存储 ‘ListingId’ 以供之后的API ‘RemoveAListingFromYourWatchlist’ 请求使用。
else if (WatchlistListingIdCount == 1) {
postman.setEnvironmentVariable('LastListingId', WatchlistListingId[(Number(WatchlistListingIdCount) - 1)]);
}
...
5.如果从监视列表中获取的项目 >1,则组装前置请求“从您的监视列表中删除列表” 以删除监视列表中除最后一个项目之外的所有项目,然后保留最后一个项目以供后续交易从您的监视列表中删除列表 删除。
else {
//Delete ListingId from Watchlist, but leave the last ListingId for later transaction to delete
console.log("Pre-Transaction: RemoveAListingFromYourWatchlist Start");
postman.setEnvironmentVariable('LastListingId', WatchlistListingId[(Number(WatchlistListingIdCount) - 1)]);
var LastListingId = pm.environment.get("LastListingId");
console.log("LastListingId: " + LastListingId);
//Exclude the last ListingId
for (var i = 0; i < (WatchlistListingId.length - 1); i++) {
const pre_request_removealistingfromyourwatchlist = {
url: pm.environment.get("BaseUrl") + '/v1/MyTradeMe/WatchList/' + WatchlistListingId[i] + '.JSON',
method: 'DELETE',
header:['Content-Type:application/json', 'Authorization:OAuth oauth_consumer_key="your Consumer Key",oauth_token="your OAuth Token",oauth_signature_method="PLAINTEXT",oauth_timestamp="1623834029",oauth_nonce="Zr5dzIAuVON",oauth_version="1.0",oauth_signature="your Consumer Secret%26your OAuth Token Secret"'],
body: {
}
};
pm.sendRequest(pre_request_removealistingfromyourwatchlist, function (err, response) {
if (err) {
console.log(err);
console.log("Pre-Transaction: RemoveAListingFromYourWatchlist Failed");
}
else {
// Output the ListingId that has been deleted
pm.test("Delete ListingId from the Watchlist, but leave the LastListingId: " + LastListingId, function () {
// console.log(response.json());
});
}
});
}
console.log("Pre-Transaction: RemoveAListingFromYourWatchlist Pass");
}
}
});
注意:如何获取Consumer Key、Consumer Secret、OAuth Token、OAuth Token Secret,请参考API测试前的准备demo
-
在 Postman 的 Authorization 标签中选择 OAuth 1.0 对请求进行授权。
OAuth 1.0 是针对发送前需要授权的交易。模板如下:
如何获取Consumer Key、Consumer Secret、OAuth Token、OAuth Token Secret,请参考API测试前的准备demo
- 组装删除请求 - 从您的监视列表中删除列表
根据 API 规范,参数 - listingId表示要删除的列表的 ID。
并且listingId 来自前置请求' 检索您的监视列表 ‘的响应,并且它已经设置为环境变量:{{LastListingId}}。
所以请求应该是 DELETE https://api.tmsandbox.co.nz/v1/MyTradeMe/WatchList/{{LastListingId}}.JSON
-
API连通性
连通性测试通过并获得响应示例。
{
"Success": true,
"Description": "Success"
}
-
API检查点
使用后置请求: API - 检索您的监视列表以检查它是否仍有可以删除的监视列表中的项目。
检查前置请求’ Retrieve your watchlist ‘的功能是否有效;
并且它可以从其响应中排除那些无法执行删除操作的项目,以便使用另一个前置请求事务“从您的监视列表中删除列表 ”;
并且它可以保留其对下游事务“从您的监视列表中删除列表 ”的响应中的最后一项以供使用。
检查“从您的监视列表中删除列表 ”的功能是否有效,它可以从监视列表中删除最后一个项目。
然后我们根据示例功能得到下面的检查代码片段。
console.log("Post-Transaction: RetrieveYourWatchlist Start");
const post_request = {
url: pm.environment.get("BaseUrl")+'/v1/MyTradeMe/Watchlist/All.JSON',
method: 'GET',
header:['Content-Type:application/json', 'Authorization:OAuth oauth_consumer_key="your Consumer Key",oauth_token="your OAuth Token",oauth_signature_method="PLAINTEXT",oauth_timestamp="1623834029",oauth_nonce="Zr5dzIAuVON",oauth_version="1.0",oauth_signature="your Consumer Secret%26your OAuth Token Secret"'],
body: {
}
};
var LastListingId = pm.environment.get("LastListingId");
pm.sendRequest(post_request, function (err, response) {
if (err) {
console.log(err);
console.log("Post-Transaction: RetrieveYourWatchlist Failed");
}
else {
// Confirm whether all ListingId have been deleted from the Watchlist
pm.test("Checking LastListingId: " +LastListingId +" has been deleted", function () {
var jsonData = response.json();
var Listdata = jsonData['List'];
var arr = [];
for(i = 0; i < Listdata.length; i++) {
//bidding items can't be deleted, need to exclude them
if(Listdata[i].BidCount != 1){
arr.push(Listdata[i].ListingId);
}
}
if (arr.length == 0){
console.log("Current count of ListingId that can be deleted in the watchlist: " +arr.length);
}
});
console.log("Post-Transaction: RetrieveYourWatchlist Pass");
}
});
运行脚本以从控制台日志验证检查点是否正常工作。
API 测试脚本增强
-
增强脚本,如添加事务功能、异常验证、参数化等。
-
运行最终脚本并从前端页面或控制台日志进行验证。
删除操作前显示在监视列表页面上。
移除操作后显示在关注列表页面。
API 测试脚本否定案例扩展
使用我们在手动测试案例中所做的“等效类划分”和“边界值分析”。
这些API测试脚本都是做反方向的业务,作为上述API正案例的延伸。
API测试脚本发布
当我们完成 API 正面和反面案例时,将脚本从调试文件夹移动到公共文件夹。
然后等待使用 CICD 工具与其他脚本结合发布到 GitHub 特定存储库。