API 功能
检索全部或部分 Trade Me 类别树。
API - 检索一般类别脚本开发步骤
API规范->业务展示->API测试脚本调试->API测试脚本增强->API测试脚本反向案例扩展->API测试脚本发布
API规范
-
关键请求字段
关键响应字段 - 类别树。
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
-
前端页面-分类页面
-
业务范围选择
获取所有子类别。
-
业务验证点
验证查询结果中是否存在特定的子类别,例如“古董和收藏品”。
API测试脚本调试
-
在 Postman 的 Authorization 标签中选择 OAuth 1.0 对请求进行授权。
OAuth 1.0 是针对发送前需要授权的交易。模板如下:
-
组装请求 - ‘检索一般类别 '
从API规范来看,参数**-depth=1**表示返回类别树的所有子类别。
所以请求应该是 GET https://api.tmsandbox.co.nz/v1/Categories.JSON?depth=1
-
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");
}
});
运行脚本以从控制台日志验证检查点是否正常工作。
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");
}
});
运行最终脚本并从前端页面或控制台日志进行验证。
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 特定存储库。