Trade Me-9-从您赢得的物品列表中删除购买 API 测试 | Postman接口自动化测试

API 功能

从赢得的项目列表中隐藏一个列表。

API - 从您赢得的物品列表中删除购买脚本开发步骤

API规范->业务展示->API测试脚本调试->API测试脚本增强->API测试脚本反向案例扩展->API测试脚本发布

API规范

  • 关键请求字段

img

  • 关键响应字段 - 有关操作是否成功的详细信息。

请注意,此操作仅在操作完成后在赢得的物品列表中仍然存在购买的情况下才会报告失败。在所有其他情况下,此 API 将报告成功(例如,如果购买 ID 无效或购买已被删除,它将报告成功)。

Success Boolean 指示操作是否成功。
Description String or null 错误的描述,如果操作失败。
  • 示例请求

GET https://api.tmsandbox.co.nz/v1/MyTradeMe/Won/00000.JSON

  • 示例响应

{
    "Success": true,
    "Description": "Success"
}

业务介绍

  • 前端页面 - 赢得列表页面(选择要删除的给定项目)

登录 > My Trade Me > Won > Delete > Confirm to delete

img

  • 前端页面 - 确认从赢得的项目列表中删除给定的项目。

img

  • 业务范围选择

链式投资组合交易

检索您赢得的物品 ->从您赢得的物品列表中删除购买(我在这里 ->常规搜索 ->检索单个列表的详细信息 ->使用“立即购买”购买拍卖

选择 API - ‘Retrieve your won items’ 作为前置请求以获取所有想要删除的赢得的物品

删除获胜项目列表中的所有获胜项目

  • 业务验证点

通过访问赢得的项目列表页面已删除检查已购买的项目。

API测试脚本调试

获取两个环境变量:{{WonPurchaseId}} 和 {{WonPurchaseIdCount}},这意味着所有赢得的项目 PurchaseId 及其在监视列表中的计数。这些变量从上游 API 的响应中设置来源 - “检索您赢得的物品 ”。

var WonPurchaseIdCount = pm.environment.get("WonPurchaseIdCount");

var WonPurchaseId = pm.environment.get("WonPurchaseId").split(",");
...

在哪里设置这两个变量参考:检索您赢得的物品 - API 测试脚本调试 -> API checkpoint。

从赢得的项目列表中删除所有赢得的项目,但保留最后一个赢得的项目(以供后置请求**“从您的赢得项目列表中删除购买” **使用。

if (WonPurchaseIdCount <= 0){

    postman.setEnvironmentVariable('LastWonPurchaseId', "00000");

}

else if (WonPurchaseIdCount == 1){

    postman.setEnvironmentVariable('LastWonPurchaseId', WonPurchaseId[(Number(WonPurchaseIdCount) - 1)]);

}

else{

    //Remove all items but the last item on the won list. The later transaction will remove the last item from the won list.
    console.log("Pre-Transaction: RemoveAPurchaseFromYourWonItemsList Start");

    postman.setEnvironmentVariable('LastWonPurchaseId', WonPurchaseId[(Number(WonPurchaseIdCount) - 1)]);

    var LastWonPurchaseId = pm.environment.get("LastWonPurchaseId");

    console.log("LastWonPurchaseId: " + LastWonPurchaseId);

    //Exclude the last WonPurchaseId
    for (var i = 0; i < (WonPurchaseId.length - 1); i++) {

        const pre_request = {

            url: pm.environment.get("BaseUrl") + '/v1/MyTradeMe/Won/' + WonPurchaseId[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, function (err, response) {

            if (err) {

                console.log(err);

                console.log("Pre-Transaction: RemoveAPurchaseFromYourWonItemsList Failed");

            }

            else {

                // Output the ListingId that has been deleted
                pm.test("Delete PurchaseId from the Wonlist, but leave the LastPurchaseId: " + LastWonPurchaseId, function () {
                    // console.log(response.json());                  
                });

            }

        });

    }

    setTimeout(()=>{

        console.log("Pre-Transaction: RemoveAPurchaseFromYourWonItemsList Pass");
        
    }, 2000);
}

注意:如何获取Consumer Key、Consumer Secret、OAuth Token、OAuth Token Secret,请参考**API测试前的准备demo **

  • 在 Postman 的 Authorization 标签中选择 OAuth 1.0 对请求进行授权。

OAuth 1.0 是针对发送前需要授权的交易。模板如下:

img

如何获取Consumer Key、Consumer Secret、OAuth Token、OAuth Token Secret,请参考**API测试前的准备demo **

根据 API 规范,参数 - purchaseId表示获胜项目列表中的隐藏项目。

purchaseId来自前置请求 **‘从您赢得的物品列表中删除购买’ **的响应报文,它已被设置为环境变量:{{LastWonPurchaseId}}。

所以请求应该是 DELETE https://api.tmsandbox.co.nz/v1/MyTradeMe/Won/{{LastWonPurchaseId}}.JSON

img

  • API连通性

连通性测试通过并获得响应示例。

{
    "Success": true,
    "Description": "Success"
}
  • API检查点

检查是否有获胜列表中的项目。

然后我们根据示例功能得到下面的检查代码片段。

//Check wheter have items on the won list
console.log("Post-Transaction: CheckingDeleteWonItems Start");

var LastWonPurchaseId = pm.environment.get("LastWonPurchaseId");

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="Your consumerKey",oauth_token="Your token",oauth_signature_method="PLAINTEXT",oauth_timestamp="1623834029",oauth_nonce="Zr5dzIAuVON",oauth_version="1.0",oauth_signature="Your consumerSecret%26Your tokenSecret"'],

    body: {
    }

};

pm.sendRequest(post_request, function (err, response) {

    if (err) {

        console.log(err);

        console.log("Post-Transaction: CheckingDeleteWonItems Failed");

    }

    else {

        // Output the PurchaseId that has been removed
        pm.test("Checking LastWonPurchaseId: " +LastWonPurchaseId +" has been removed", function () {

            var jsonData = response.json();

            var TotalCount = jsonData.TotalCount;

            if (TotalCount == 0){

                console.log("Current items count on the won list: "+TotalCount + ". All items have been removed from the won list.");

                console.log("Post-Transaction: CheckingDeleteWonItems Pass");

            }

            else{

                console.log("Current items count on the won list: "+TotalCount + ". Still have Items need to be removed from the won list.");
                
                console.log("Post-Transaction: CheckingDeleteWonItems Failed");
                
            }

        });

    }
       
});

运行脚本以从控制台日志验证检查点是否正常工作。

从获胜列表页面中删除一项。

img

img

从获胜列表页面中删除了多个项目。

img

img

API 测试脚本增强

  • 增强脚本,如添加事务功能、异常验证、参数化等。

  • 运行最终脚本并从前端页面或控制台日志进行验证。

移除操作前显示在 Won 列表页面上。

img

删除操作后显示在赢得的列表页面上。

img

API 测试脚本否定案例扩展

使用我们在手动测试案例中所做的“等效类划分”和“边界值分析”。

这些API测试脚本都是做反方向的业务,作为上述API正案例的延伸。

API测试脚本发布

当我们完成 API 正面和反面案例时,将脚本从调试文件夹移动到公共文件夹。

然后等待使用 CICD 工具与其他脚本结合发布到 GitHub 特定存储库。

版权

本作品采用 CC BY-NC-ND 4.0 授权。