Trade Me-3-检索一般类别 API 测试 | Postman接口自动化测试

API 功能

检索全部或部分 Trade Me 类别树。

API - 检索一般类别脚本开发步骤

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

API规范

  • 关键请求字段

img

关键响应字段 - 类别树。

Name String or null 类别的名称。
Number String or null 类别的唯一标识符,例如“0004-0369-6076-”。我们计划将其更改为数字标识符(例如“6076”),因此您应该确保您可以处理这两种格式。
Path String or null 此类别的完整 URL 路径,例如“/Home-living/Beds-bedroom-furniture/Bedside-tables”。
Subcategories Collection of or null 属于该类别的子类别列表。

更多 API 规范参考Retrieve general category

  • 示例请求

GET https://api.tmsandbox.co.nz/v1/Categories.JSON?depth=1

  • 示例响应

{
    "Name": "Root",
    "Number": "",
    "Path": "",
    "Subcategories": [
        {
            "Name": "Trade Me Motors",
            "Number": "0001-",
            "Path": "/Trade-Me-Motors",
            "HasClassifieds": true,
            "AreaOfBusiness": 3,
            "CanHaveSecondCategory": true,
            "CanBeSecondCategory": true,
            "IsLeaf": false
        },
        {
            "Name": "Trade Me Property",
            "Number": "0350-",
            "Path": "/Trade-Me-Property",
            "HasClassifieds": true,
            "AreaOfBusiness": 2,
            "IsLeaf": false
        },
        ...
    ],
    "AreaOfBusiness": 0,
    "IsLeaf": false
}        

业务介绍

  • 前端页面 - 转到所有类别页面

首页 > View all categories

img

  • 前端页面-分类页面

img

  • 业务范围选择

获取所有子类别。

  • 业务验证点

验证查询结果中是否存在特定的子类别,例如“古董和收藏品”。

API测试脚本调试

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

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

img

从API规范来看,参数**-depth=1**表示返回类别树的所有子类别。

所以请求应该是 GET https://api.tmsandbox.co.nz/v1/Categories.JSON?depth=1

img

  • API连通性

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

{
    "Name": "Root",
    "Number": "",
    "Path": "",
    "Subcategories": [
        ...
        {
            "Name": "Antiques & collectables",
            "Number": "0187-",
            "Path": "/Antiques-collectables",
            "AreaOfBusiness": 1,
            "CanHaveSecondCategory": true,
            "CanBeSecondCategory": true,
            "IsLeaf": false
        },
        ...
    ],
    "AreaOfBusiness": 0,
    "IsLeaf": false
}        
  • API检查点

我们可以知道连接测试响应的查询结果中存在子类别“古董和收藏品”。

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

pm.test("Checking all subcategories returned, and the given subcategory exists in", function () {

    var jsonData = pm.response.json();

    var arr =[];

    var Subcategories = jsonData.Subcategories;  

    // Traverse all Subcategories from response, and find wheter a specific subcategory is in.
    for (i in Subcategories){

        var Name = Subcategories[i].Name;

        arr.push(Name);

        if(Name == "Antiques & Collectables"){

            var SpecificSubcategories = Name;

        }
    }
    
    // checkpoint: whether subcategory - 'Antiques & Collectables' exists in the response
    if(SpecificSubcategories !== []){

        console.log("Subcategory - Antiques & Collectables existed");

    }
    
});

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

img

API 测试脚本增强

  • 增强脚本,如添加事务功能、异常验证、参数化等。
pm.test("Checking all subcategories returned, and the given subcategory exists in", function () {

    console.log("Post-Transaction: CheckingtheCountsofGivenSubcategory Start");

    var jsonData = pm.response.json();

    var arr =[];

    if (typeof(pm.response.json().Subcategories) !== "undefined"){

        var Subcategories = jsonData.Subcategories;  

        // Traverse all Subcategories from response, and find wheter a specific subcategory is in.
        for (i in Subcategories){

            var Name = Subcategories[i].Name;

            arr.push(Name);

            if(Name == "Antiques & collectables"){

                var SpecificSubcategories = Name;

            }
        }
        
        console.log("Subcategories counts to: " + jsonData.Subcategories.length);

        console.log("All subcategories name listed below: ");

        console.log(arr);

        // checkpoint: whether subcategory - 'Antiques & collectables' exists in the response      
        if(typeof(SpecificSubcategories) !== "undefined" && SpecificSubcategories.length >= 1 ){

            console.log("Subcategory - Antiques & collectables existed");

            console.log("Post-Transaction: CheckingtheCountsofGivenSubcategory Pass");
            
        }
        else{

            console.log("Subcategory - Antiques & collectables is not existed");

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

        }
     
    }

    else{

        console.log(pm.response.json());

        console.log("Didn't catch the Subcategory field");
        
        console.log("Post-Transaction: CheckingtheCountsofGivenSubcategory Failed");

    }

});

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

img

img

API 测试脚本否定案例扩展

我们可以使用“等效类分区”和“边界值分析”来测试 API,就像我们在手动测试案例中所做的那样。

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

从 API 规范来看,参数 - depth=-10可能是一个“超出边界值”的情况,如果我们发送一个带有这个参数的请求,它期望返回一个异常。

所以请求应该是 GET https://api.tmsandbox.co.nz/v1/Categories.JSON?depth=-10

  • API检查点

运行脚本,我们得到示例响应为blow。

{
    "Name": "Root",
    "Number": "",
    "Path": "",
    "AreaOfBusiness": 0,
    "IsLeaf": false
}

在发送此请求时,我们没有看到响应处理深度字段异常值的任何错误消息。

因此,我们可以将此作为错误报告给开发人员。

API测试脚本发布

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

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

版权

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