Trade Me-11-检索单个列表的详细信息API 测试 | Postman接口自动化测试

API 功能

检索单个列表的详细信息。

API - 检索单个列表的详细信息脚本开发步骤

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

API规范

  • 关键请求字段

img

  • 关键响应字段 - 列表的详细信息。

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' 商品并进入商品详情页面

img

  • 业务范围选择

链式组合交易

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

从上游交易“从您赢得的物品列表中删除购买 ”中获取具有“立即购买”功能的随机物品 以显示。

从下游交易“使用立即购买购买拍卖 ”的响应中获取随机 “ShippingId” 以使用。

  • 业务验证点

检查给定的项目详细信息显示在页面上。

API测试脚本调试

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

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

img

如何获取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

img

  • 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");

    }
    
 });

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

img

img

API 测试脚本增强

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

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

API 测试脚本否定案例扩展

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

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

API测试脚本发布

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

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

版权

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