发布于 2026-01-06 3 阅读
0

API 测试编写入门指南

API 测试编写入门指南

这是你的时刻。

你倾注了无数心血,打造了一个拥有海量优质数据的 API。

你启动应用程序的前端,点击按钮,焦急地等待 API 数据显示在浏览器中。

为什么你的屏幕上什么都没显示?!

另类Giphy

作为新手,你可能犯的一个严重错误就是在开发过程中没有对 API 进行测试。一个很容易修复的 bug,如果隐藏在庞大的 API 中,就可能变成一场噩梦。

为了未来的自己着想,请务必在 API 开发的每个阶段都进行测试。更棒的是,你甚至不需要编写前端代码就能进行测试。

你可以使用 Postman!

什么是邮递员?

Postman是一个用于 API 开发的协作平台。它提供免费版本,可用于设计、开发和测试 API。您还可以使用它来探索想要集成到应用程序中的第三方 API。

目标

在本教程中,我将使用 Trello REST API 和 Postman 向您展示如何编写 API 测试。

读完这篇博客,你将能够:

  1. 通过 Postman 发送 POST 请求,在 Trello 中创建看板和列表。
  2. 使用 Postman 编写 API 测试,以确保 API 功能正常。

其他资源

如果您是刚开始接触创建 API 或使用 Postman 的朋友,我写了两篇博客文章,更深入地解释了这些概念。请点击这里查看:

  1. 使用 Rails 从零开始创建 API 的入门指南
  2. 强参数和验证入门指南

我发现 Valentin Despa在 Udemy 上开设的 Postman 课程非常有用。这篇博客就是基于我从这门课程中学到的知识而写的。

我们开始吧!

先决条件:下载软件及注册账号:

  1. 下载Postman

  2. 在此注册一个免费的 Trello 帐户并登录。

Trello 是我经常使用的另一个工具,因为我喜欢用分类看板来直观地整理我的待办事项清单!

要访问 Trello API,您需要 API 密钥和令牌。点击此链接。您将看到如下所示的 API 密钥。

替代文字

将密钥保存在安全的地方。然后,点击红色箭头所示的“生成令牌”链接。

点击页面底部的“允许”按钮,授予 Trello 访问您帐户的权限。请妥善保存您的令牌,因为我们将使用 API 密钥和令牌来测试 Trello API。

替代文字

好了,现在我们已经设置好了所有需要的工具,让我们快速浏览一下 Postman 和 Trello 看板的布局。

布局

邮递员布局

替代文字

Postman 工作区拥有类似浏览器的界面,如上图所示。我用彩色箭头标出了我们将要使用的功能。

让我们逐一分析这些问题。

  1. HTTP 方法(红色箭头):点击向下箭头,您将看到可用于向 API 发送请求的多种HTTP 方法。在本教程中,我们将使用 HTTP 方法 POST(创建)。

  2. URL栏(橙色箭头):我们将在此处输入要测试的Trello API的请求URL。

  3. 发送按钮(黄色箭头):使用此按钮会将我们的请求发送到 API。

  4. 查询参数(绿色框):我们将在此处输入查询参数。查询参数是可选的键值对,出现在 URL 中问号之后(定义来自 Rapid API)。您可以在调用资源时在此处添加其他信息。我们稍后会介绍如何使用查询参数!

  5. 测试(蓝色箭头):最后但同样重要的是,测试选项卡是我们编写 API 测试的地方。

Trello看板布局

替代文字

上图是我用 Trello 创建的个人旅行愿景板的截图。我热爱冒险,这个 Trello 愿景板帮助我将旅行目的地可视化,并逐一完成我的旅行清单。

我的旅行愿景板上有三个清单:

  1. 哦,想去那里吗?这份清单包含了所有我梦想去的地方的目的地卡片。
  2. 收拾行囊!这份清单包含了近期我要去的地方的旅行卡片。
  3. 又一次精彩的冒险——完成!这份清单包含了我去过的地方的目的地卡片。

现在我们已经了解了要使用的工具的布局,接下来让我们深入了解Trello API 文档。

本文档将帮助我们了解如何从 Postman 向 Trello API 发送请求。我们将使用这些信息在 Trello 中创建看板和列表。

编写 API 测试

任务 1:通过向 Trello API 发送 POST 请求来创建 Trello 看板

步骤 1:打开Trello API 文档。
该文档包含了我们使用 API 所需的所有信息。

步骤 2:了解如何在 Trello 上创建看板。
左侧有各种主题可供选择。我们要创建一个看板,因此请展开“看板”主题,然后点击“创建看板”(红色方框)选项。

替代文字

创建看板的相关信息应该会显示在右侧(绿色框)中。

请注意上方绿色方框标出的区域。

创建看板时,需要指定:

  1. 我们需要发出一个 POST 请求
  2. 我们的查询参数必须包含 API 密钥、令牌和看板名称。

向下滚动直到看到示例部分。它会提供你可以发送此 POST 请求的 URL。

替代文字

太好了。我们现在有了创建看板所需的所有信息,让我们打开 Postman 吧。

步骤 3:在 Postman 中添加所有必要信息,以便向 Trello API 发送 POST 请求。

替代文字
请参考与以下方向对应的编号箭头。

  1. 将 HTTP 方法更改为 POST
  2. 将 Trello 文档中的 URL 复制并粘贴到地址栏中。截至 2020 年 8 月 14 日,最新文档中的 URL 应如下所示:
    https://api.trello.com/1/boards/?key=0471642aefef5fa1fa76530ce1ba4c85&token=9eb76d9a9d02b8dd40c2f3e5df18556c831d4d1fadbe2c45f8310e6c93b5c548&name={name}

  3. 请使用您自己的 API 密钥、令牌和看板名称更新查询参数。

请记住,查询参数位于请求 URL 中问号 (?) 之后,它允许您向 API 发送额外信息。如果您查看 URL,您会看到名为 key、token 和 name(板名)的查询参数。

如果您尝试使用 API 中的 URL 发送请求,则不会成功,因为您需要添加自己的 API 密钥和令牌才能获得访问权限。

找到橙色高亮显示的“查询参数”部分。它包含两列:键和值。

替代文字

在键列中,按照图片所示填写键、令牌、名称。

在“值”列中,复制并粘贴您之前保存的 API 密钥和令牌到相应的行中。

对于名称键,请输入值“旅行愿景板”。

填写完这些字段后,请查看地址栏。您会发现 URL 中的查询参数已更新为您在查询参数键值表中输入的信息。

步骤 4:点击发送按钮,将请求提交给 Trello API

步骤 5:评估您从 Trello API 收到的响应(位于正文部分,粉色框中)。 您会看到返回了一个包含已创建看板信息的对象。我们有三个线索表明看板已成功创建:
替代文字

线索 1:在返回的对象中,该棋盘已被分配了 id。如果棋盘创建失败,则返回的 id 将为 null。

线索 2:在状态部分(浅蓝色框)中,我们收到了200 OK的状态,这意味着看板已成功创建。

线索 3:当你登录你的 Trello 帐户时,你会看到旅行愿景板已在你的帐户中成功创建。

我们刚才介绍的是检查 API 是否正常工作的另一种方法。您可以使用 Postman 编写测试来更仔细地测试 API。我们将在任务 2 中详细讲解!

任务 2:通过发送 POST 请求在看板内创建列表

这项任务与创建看板非常相似。

步骤 1:查阅Trello API 文档,收集有关如何在看板中创建列表的信息。

向下滚动到“列表”,然后选择“创建新列表”

替代文字

创建列表的相关信息应该显示在右侧(绿色框)中。

请注意图中绿色方框标出的区域。

创建列表时,需要指定:

  1. 我们需要发出一个 POST 请求
  2. 我们的查询参数必须包含 API 密钥、令牌、列表名称以及您要在其中创建列表的版块 ID。

向下滚动到示例部分并复制网址。

好了,我们继续聊邮差吧!

替代文字

步骤 3:在 Postman 中打开一个新标签页。
您之前用来发送创建版块请求的 Postman 标签页应该可见。点击“+”号创建一个新标签页。

步骤 4:在新标签页中,将 HTTP 方法更改为 POST

步骤 5:复制 Trello 文档中的 URL 并粘贴到地址栏中。
最新文档(截至 2020 年 8 月 14 日)中的 URL 应如下所示:
https://api.trello.com/1/lists? key=0471642aefef5fa1fa76530ce1ba4c85&token=9eb76d9a9d02b8dd40c2f3e5df18556c831d4d1fadbe2c45f8310e6c93b5c548&name={name}&idBoard=5abbe4b7ddc1b351ef961414

步骤 6:使用您自己的 API 密钥、令牌、列表名称以及要在其中创建列表的 Board 的 ID 更新查询参数。 在密钥列中,输入密钥、令牌、名称和 idBoard,如图所示。
替代文字

在“值”列中,复制并粘贴您之前保存的 API 密钥和令牌到相应的行中。

列表名称设为“哦,想去那里吗?”

对于 idBoard,请从上一个标签页复制我们创建的看板的 id,并将其粘贴到此处。

步骤 7:点击发送按钮,将请求提交给 Trello API

步骤 8:评估您从 Trello API 收到的响应(在正文部分,粉色框中)。 您会看到已向您返回一个包含列表信息的对象。
替代文字

任务 3:使用 Postman 编写 API 测试

测试是将响应值与预期值进行比较的一种实践。在 Postman 中,测试仅在收到服务器响应后才会执行。

替代文字

点击红色方框突出显示的“测试”选项卡。将显示如下界面。

替代文字

在右侧,您会看到一个名为“代码片段”的部分。这些是常用 API 测试的代码片段,您可以根据自己的 API 进行自定义。

步骤 1:学习如何使用测试代码片段:状态码:代码为 200

向下滚动并选择“状态码:代码为 200”(绿色框)。选择后,您将在页面上看到以下代码片段(红色框)。

#test 1
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});
Enter fullscreen mode Exit fullscreen mode

让我们来分析一下。

pm.test
是 Postman 的一个函数,用于编写测试规范。所有 Postman 测试都以pm.test开头。

“状态码为 200”
。pm.test 函数的第一个参数是测试名称,通常是一个字符串。由于我们要测试状态码是否为 200,因此测试名称如下所示。

  • function () {...}*
    第二个参数是一个包含断言的回调函数。

  • `pm.response.to.have.status(200)*
    ` 是一个断言。它指定了您对 API 发送的响应的预期。在本例中,您预期响应的状态码为 200。

让我们把所有内容整合起来!状态码:代码为 200 的代码片段表示“调用名为状态码为 200 的pm.test 函数。检查响应是否返回状态码 200。很简单,对吧?”

步骤 2:学习如何使用测试代码片段:响应正文:JSON 值检查

仅仅测试状态码不足以完全了解我们发送的 API 请求究竟发生了什么。

如果我们想测试列表是否是使用特定名称或属性创建的,该怎么办?

您可以使用响应正文:JSON 值检查代码片段(红色框)。
替代文字

点击该代码片段应该会显示以下测试(橙色框)。

pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});
Enter fullscreen mode Exit fullscreen mode

如您所见,这段代码与我们刚才讲解的状态码 200 测试非常相似。让我们把回调函数拆解成易于理解的小部分。

var jsonData = pm.response.json();

这行代码将 jsonData 声明为一个变量,该变量将 API 响应解析为 Javascript 对象。

屏幕底部三分之一处(粉色框内)显示的是一个 JavaScript 对象。该对象包含关于我们刚刚在 Trello 看板中创建的列表的重要信息。

替代文字

pm.expect(jsonData.value).to.eql(100);

这行代码允许你将 Javascript 对象中的值与预期值进行比较。

查看 Javascript 对象(粉色框)时,你会发现其中有多个键值对。

为确保已创建正确的列表,您可以检查创建的列表是否显示正确的列表名称。(黄色框)

查看 Javascript 对象时,你会发现列表的名称包含在键值对“name”中:“Ooh wanna go there?”

让我们编写一个测试,看看新创建的列表是否包含名称“Ooh wanna go there?”。

  1. 在 pm.test 的第一个参数中,将测试命名为:“检查列表名称是否正确”。

  2. 找到pm.expect(...),将键名放在 jsonData 之后。

  3. 在.eql后面的括号中,输入“Ooh wanna go there?”的值。

您的测试应该如下所示:

#test 2
pm.test("Check if the list is correctly named", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.name).to.eql("Ooh wanna go there? ");
});
Enter fullscreen mode Exit fullscreen mode

在运行测试之前,我们再编写一个测试!

在 Trello 中,您可以创建多个看板。如果您想确保列表是在特定的看板中创建的,该怎么办?您能猜到需要编写什么测试来检查这一点吗?

请自行尝试解答,并将您的答案与下面的解答进行比较!

#Test 3
pm.test("Check if the list has been created within designated board", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.idBoard).to.eql("5f3709ddfc5a9068eb2b821c");
});
Enter fullscreen mode Exit fullscreen mode

说明:
当我们发送 POST 请求创建列表时,我们会将要创建列表的看板 ID 作为查询参数包含在内。发送 POST 请求后,您会收到一个 JavaScript 对象,其键为 idBoard(绿色框)。这就是创建列表的看板的 ID。
替代文字

为了检查列表是否在正确的看板中创建,只需检查列表的 idBoard 属性值是否等于您希望在其中创建列表的看板的 id。

步骤 3:点击发送按钮运行三个测试

此操作将再次向 Trello API 发送 POST 请求。收到 API 响应后,Postman 将运行我们编写的三个测试。

第四步:查看测试结果

看到标有红色星号的测试结果标签页了吗?
括号里显示的是已通过的测试数量。点击“测试结果”即可。

替代文字

点击“测试结果”将显示以下页面。

替代文字

这表明所有测试都已通过,这意味着我们能够成功地在正确的看板中创建具有正确名称的列表!

步骤 5:通过将预期值更改为错误值来使测试失败

你会惊讶于开发人员编写的测试用例有多少是永远不会失败的!编写一个无法区分正确值和错误值的测试用例有什么意义呢?

编写测试时,最好先测试一下测试是否可能失败。

我们以“检查列表名称是否正确”测试为例。我特意将“Ooh wanna go there?”改成“Ooh wanna go there?!!!!!”,看看测试能否检测出我设置的列表名称有误。

pm.test("Check if the list is correctly named", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.name).to.eql( "Ooh wanna go there?!!!!! ");
});
Enter fullscreen mode Exit fullscreen mode

点击发送按钮,我们再运行一​​次测试。

替代文字

太棒了!!列表名称值错误导致测试失败。现在你知道你的测试很可靠,可以放心地让它检测出 API 中的可疑活动。

就是这样!

您现在已经掌握了使用 Trello API 和在 Postman 中编写 API 测试的基础知识。为了获得更多练习机会,请尝试完成以下挑战!

挑战 1:
从列表中创建和删除卡片,并编写自己的测试来检查一切是否正常。

挑战 2:
将卡片从一个列表移动到另一个列表,并编写自己的测试来检查一切是否正常。

另类Giphy

文章来源:https://dev.to/lisahjung/beginner-s-guide-to-writing-api-tests-daj