测试锤子。 快速启动

测试锤子。 快速启动

大家好。 我们正在慢慢地走出阴影,继续撰写有关我们产品的系列文章。 后 回顾文章后,我们收到了很多反馈(大部分是积极的)、建议和错误报告。 今天我们将展示 测试锤 在行动中,您将能够欣赏到我们应用程序的一些功能。 为了更完整地沉浸其中,我建议您参阅我们的文档: http://docs-ru.testmace.com。 那么,我们走吧!

安装

让我们从平庸开始。 该应用程序在三个平台上可用并经过实际测试 - Linux、Windows、MacOS。 您可以从以下位置下载您感兴趣的操作系统的安装程序 我们的网站。 对于 Linux 用户,可以安装 快照包。 我们真心希望 Microsoft Store 和 App Store 能够尽快解决这个问题(有必要吗?您觉得怎么样?)。

实验场景

我们选择以下标准场景作为我们的测试对象:

  • 登录:用户-admin,密码-密码
  • 添加新条目
  • 我们来检查一下记录是否添加正确

我们将测试 https://testmace-quick-start.herokuapp.com/。 这个是正常的 json服务器,非常适合测试此类应用程序。 我们刚刚向所有 json-server 路由添加了令牌授权,并创建了一个登录方法来接收此令牌。 我们将循序渐进,逐步完善我们的项目。

创建项目并尝试未经授权创建实体

首先,让我们创建一个新项目(文件->新项目)。 如果您是第一次启动该应用程序,则会自动打开一个新项目。 首先,我们尝试发出创建新记录的请求(以防未经授权即可创建记录)。 从项目节点上下文菜单中选择项目 添加节点 -> 请求步骤。 将节点名称设置为 创建帖子。 结果,将在树中创建一个新节点,并且将打开该节点的选项卡。 让我们设置以下请求参数:

测试锤子。 快速启动

但是,如果我们尝试满足请求,服务器将返回 401 代码,未经授权我们将无法在此服务器上获得任何内容。 嗯,总的来说,正如预期的那样)。

添加授权请求

正如已经说过的,我们有一个 POST 端点 /login,它将 json 作为以下形式的请求正文: {"username": "<username>", "password": "<password>"}哪里 username и password (再次,来自上面的介绍性段落)有含义 admin и password 分别。 作为响应,此端点返回 json,例如 {"token": "<token>"}。 我们将使用它来进行授权。 让我们来创建 请求步骤 带名称的节点 登录,将充当祖先 项目 节点使用拖放操作,将树中的给定节点移动到高于该节点的位置 创建帖子。 让我们为新创建的请求设置以下参数:

让我们执行请求并接收响应中带有令牌的第二百个代码。 像这样的东西:

测试锤子。 快速启动

重构:删除域重复

到目前为止,请求尚未链接到单个脚本中。 但这并不是唯一的缺点。 如果仔细观察,您会发现至少两个请求中的域都是重复的。 不好。 是时候重构未来脚本的这一部分了,变量将帮助我们做到这一点。

初步估计,变量与其他类似工具和编程语言中的作用相同——消除重复、增加可读性等。 您可以阅读有关变量的更多信息 我们的文档。 在这种情况下,我们将需要用户变量。

让我们在项目节点级别定义一个变量 domain 有意义 https://testmace-quick-start.herokuapp.com. 为此有必要

  • 打开包含此节点的选项卡,然后单击右上角的计算器图标
  • 点击 + 添加变量
  • 输入变量名称和值
    在我们的例子中,添加了变量的对话框将如下所示:

测试锤子。 快速启动

好的。 现在,由于继承,我们可以在任何嵌套级别的后代中使用此变量。 在我们的例子中,这些是节点 登录 и 创建帖子。 为了在文本字段中使用变量,您需要编写 ${<variable_name>}。 例如,登录网址转换为 ${domain}/login,分别为 创建帖子 节点 url 看起来像 ${domain}/posts.

因此,在 DRY 原则的指导下,我们稍微改进了场景。

将令牌保存到变量中

既然我们正在讨论变量,那么让我们稍微扩展一下这个主题。 目前,如果登录成功,我们会从服务器收到一个授权令牌,在后续请求中将需要该令牌。 让我们将此标记保存到变量中。 因为变量的值将在脚本执行期间确定,我们为此使用一种特殊的机制 - 动态变量.

首先,让我们执行登录请求。 在选项卡中 已解析 答案,将光标移到标记上,然后在上下文菜单中(使用鼠标右键或单击按钮...调用)选择项目 分配给变量。 将出现一个对话框,其中包含以下字段:

  • 途径 — 采用答案的哪一部分(在我们的例子中是 body.token)
  • 当前值 — 路径上有什么值(在我们的例子中,这是令牌值)
  • 变量名 — 变量名称,其中 当前值 将被保留。 在我们的例子中它将是 token
  • Node — 将在哪个祖先中创建变量 变量名。 我们选择项目

完成的对话框如下所示:

测试锤子。 快速启动

现在每次执行节点时 登录 动态变量 token 将使用响应中的新值进行更新。 这个变量将被存储在 项目 节点,并且由于继承,将可供后代使用。

要访问动态变量,您必须使用 内置变量 $dynamicVar。 例如,要访问存储的令牌,您需要调用 ${$dynamicVar.token}.

我们将授权令牌传递到请求中

在前面的步骤中,我们收到了授权令牌,我们需要做的就是添加一个标头 Authorization 有意义 Bearer <tokenValue> 在所有需要授权的请求中,包括 创建帖子。 做这件事有很多种方法:

  1. 手动复制令牌并将授权标头添加到感兴趣的请求中。 该方法有效,但其使用仅限于“制造后丢弃”类型的请求。 不适合重复执行脚本
  2. 使用功能 授权书.
  3. 使用 默认标头

使用第二种方法似乎很明显,但在本文的上下文中,这种方法......无趣。 嗯,真的:授权机制加减是您在其他工具中熟悉的(即使我们有类似的东西) 授权继承)并且不太可能提出问题。

另一件事是默认标题! 简而言之,默认标头是继承的 HTTP 标头,除非明确禁用,否则默认情况下会将其添加到请求中。 例如,使用此功能,您可以实现自定义授权或简单地消除脚本中的重复。 让我们使用此功能在标头中传递令牌。

之前,我们谨慎地将令牌保存到动态变量中 $dynamicVar.token 在项目节点级别。 剩下的就是执行以下操作:

  1. 定义默认标题 Authorization 有意义 Bearer ${$dynamicVar.token} 在项目节点级别。 为此,在节点的项目界面中,您需要打开一个带有默认标题的对话框(按钮 右上角)并添加相应的标题。 包含填充值的对话框将如下所示:
    测试锤子。 快速启动
  2. 从登录请求中禁用此标头。 这是可以理解的:在登录时,我们还没有令牌,我们将通过此请求安装它。 因此,在tab中请求的登录界面 的区域中 遗传 取消选中授权标头。

就这样。 现在,授权标头将添加到项目节点子级的所有请求(登录节点除外)。 事实证明,在这个阶段我们已经准备好了一个脚本,我们所要做的就是启动它。 您可以通过选择来运行脚本 运行 在项目节点的上下文菜单中。

检查帖子创建的正确性

在此阶段,我们的脚本可以登录并使用授权令牌创建帖子。 但是,我们需要确保新创建的帖子具有正确的名称。 也就是说,本质上,剩下的就是执行以下操作:

  • 通过 id 发送接收帖子的请求,
  • 检查从服务器收到的名称是否与创建帖子时发送的名称匹配

让我们看一下第一步。 由于 id 值是在脚本执行期间确定的,因此您需要创建一个动态变量(我们称之为 postId) 从节点 创建帖子 在项目节点级别。 我们已经知道如何做到这一点,只需参考 部分 将令牌保存到变量中。 剩下的就是创建一个使用此 ID 接收帖子的请求。 为此,我们创建一个 RequestStep 获取帖子 具有以下选项:

  • 请求类型:GET
  • 网址:${domain}/posts/${$dynamicVar.postId}

为了实现第二步,我们需要熟悉 断言 结。 断言节点是允许您为特定请求编写检查的节点。 每个断言节点可以包含多个断言(检查)。 您可以从我们的文章中阅读有关所有类型断言的更多信息 文件资料。 我们将使用 Compare 带有运算符的断言 equal。 有多种方法可以创建断言:

  1. 长的。 从 RequestStep 节点的上下文菜单手动创建 Assertion 节点。 在创建的断言节点中,添加感兴趣的断言并填写字段。
  2. 快速地。 使用上下文菜单创建一个断言节点以及来自 RequestStep 节点响应的断言

我们使用第二种方法。 这就是我们案例的样子。

测试锤子。 快速启动

对于那些不明白的人,这是发生的事情:

  1. 在节点中发起请求 获取帖子
  2. 在标签中 已解析 回答,调用上下文菜单并选择 创建断言 -> 对比其他款式 -> 等于

恭喜,我们已经创建了第一个测试! 很简单,不是吗? 现在您可以完全运行该脚本并享受结果。 剩下的就是稍微重构一下并将其取出 title 到一个单独的变量中。 但我们会把这个作为作业留给你)

结论

在本指南中,我们创建了一个完整的场景,同时回顾了我们产品的一些功能。 当然,我们并没有使用所有功能,在接下来的文章中我们将详细概述 TestMace 的功能。 敬请关注!

PS 对于那些懒得重现所有步骤的人,我们已经记录下来 存储库 与文章中的项目。 你可以用以下命令打开它 文件 -> 开启专案 并选择项目文件夹。

来源: habr.com

添加评论