本教程介绍如何创建用于在场景中快速添加 OAuth 2.0 身份验证 Set-Up 测试的智能测试模板。
概要
流程概述如下:
- 创建一个 .tst 文件并添加一个空的 REST 客户端。这是智能测试模板用于启用身份验证的源客户端。
- 配置客户端向身份验证服务器请求令牌。
- 将访问令牌和令牌类型变量添加到测试套件配置中。
- 为该客户端附加 JSON 数据库工具,以便从响应中提取访问令牌和令牌类型。应将值提取为变量,而不是默认设置的自定义列名。
- 创建智能测试模板(.stt)文件,并配置资源套件以匹配需要身份验证的测试。
- 添加与父套件匹配的资源模板。
- 将一个测试套件引用链接到该资源模板。
- 配置测试套件引用,指向启用身份验证的 .tst 文件。
- 如果需要对特定路径进行身份验证,可在套件中添加额外的资源模板,以完善应用 .stt 时匹配的测试。
- 在资源模板中添加 HTTP 消息头输出,并在请求中包含发送令牌类型和访问令牌变量的授权头。
- 保存所有更改,并将模板应用到需要身份验证的测试中。
在每个所包含测试与智能测试模板中的配置相匹配的测试套件开头,都会添加一个测试套件引用。该套件将包括 REST 客户端和 JSON 数据库,以及提取的访问令牌和令牌类型。如果在测试套件引用配置中启用了保留为相对路径选项,则可能需要修改生成的测试套件中的测试套件引用字段。
配置身份验证源
本节介绍如何创建和配置包含 REST 客户端的测试套件,该客户端将用于捕获 OAuth 2.0 身份验证令牌信息。
- 前往 文件 > 新建 > 测试 (.tst) 文件。
- 指定项目文件夹和名称(例如
AuthSuite
)。 - 点击下一步,选择空。
- 点击完成,双击新套件在编辑器中打开。
- 点击变量选项卡,然后点击添加。
- 使用以下设置配置变量:
- 在名称字段中输入
access_token
。 - 从类型菜单中选择字符串。
- 在值字段中输入
default_token
。
- 在名称字段中输入
- 保存变量并创建另一个变量,设置如下:
- 在名称字段中输入
token_type
。 - 从类型菜单中选择字符串。
- 在值字段中输入
default_type
。
- 在名称字段中输入
- 保存变量并右键点击套件。
- 从快捷菜单中选择新增 > 测试...,并在向导中选择标准测试 > REST 客户端。
- 点击完成,然后资源选项卡。
- 指定身份验证服务器的 URL,并包含申请令牌所需的登录凭据。根据 OAuth 2.0 RFC,您的令牌请求必须包括一组特定信息,如授予类型、客户端 ID、客户端密钥和范围,具体取决于您使用的身份验证流程。详情请参阅 OAuth 2.0 授权框架。凭据的传递方法取决于您的应用程序。例如,您的身份验证服务器可能要求使用 POST 调用,并在有效负载中发送登录凭据。在下面的示例中,令牌请求参数使用 multipart/form-data 格式在 REST 客户端有效负载中发送:
- 保存变更。
- 右键点击 REST 客户端,然后选择添加输出...。
- 在左侧窗格中选择响应 > 通讯报文,在右侧窗格中选择 JSON 数据库,然后点击完成。
- 选择该客户端,点击工具栏中的运行测试以填充输出。
- 提取
access_token
参数,点击修改。 - 选择数据源列并启用变量。
- 选择 access_token,点击 OK。
- 提取
token_type
参数,点击修改。 - 点击数据源列并启用变量选项。
- 选择
token_type
,点击 OK。 - 保存变更。
这样,REST 客户端便配置为从身份验证服务器提取 OAuth 访问令牌和令牌类型,并将值存储在变量中。按照下节所述配置智能测试模板后,应用该模板时,套件将被复制到需要身份验证的测试中。
创建智能测试模板
本节介绍如何创建智能测试模板,用于需要身份验证的测试。
- 打开智能测试模板视图,点击工具栏中的添加模板。
- 指定模板的名称和位置,点击下一步。模板必须保存到 TestAssets 文件夹或 TestAssets 文件夹的子文件夹中。
- 选择空,然后点击完成。
- 双击该资源套件,在匹配字段中指定模式。该模式应明确您想要应用规则的端点。有关匹配资源的更多信息,请参阅定义智能 API 测试生成的范围。
- 右键点击该资源套件,选择新建> 资源模板。
- 指定其他模式匹配逻辑(例如,REST 方法或路径段),以明确将模板应用于哪些测试。将匹配字段留空,以匹配父资源套件匹配的所有测试。
- 右键点击该资源套件,选择添加输出...
- 在左侧窗格中选择套件 > 开始,在右侧窗格中选择测试套件引用。
- 点击完成,指定在Configuring the Authentication Source部分创建的 .tst 文件。如果启用保留为相对路径选项,应用模板时在测试套件配置中生成的路径将相对于 TestAssets 字段。您可以使用
${project_loc
} 变量来引用另一个项目中的测试。例如,如果您创建的 REST 客户端保存在一个名为“auth”的项目中,而 .tst 文件的名称为“AuthSuite”,那么您可以在该字段中指定${project_loc:auth}/AuthSuite.tst
。应用模板时,引用的路径正确。 - 再次右键点击该资源套件,选择添加输出...
- 在左侧窗格中选择请求 > 传输头文件,在右侧窗格中选择 HTTP 消息头。
点击完成,然后在 HTTP 消息头工具的工具设置部分添加以下头部:
Authorization: ${access_token} ${token_type}
- 保存变更。
应用智能模板
本节将介绍如何应用智能测试模板,以及为了让目标测试按预期进行身份验证可能需要完成的其他操作。
将模板应用于单项测试
- 右键点击测试并选择应用智能测试模板。
- 出现提示时,检查智能测试模板规则,然后点击 OK。
包含身份验证设置的测试套件引用将被添加到包含该测试的测试套件开头。
运行该测试套件,验证其效果是否符合预期。打开目标测试,点击 HTTP 选项。应能在 HTTP 标题部分看到授权变量。
如果在引用源 .tst 文件时未使用项目变量,且智能测试模板中启用了保留为相对路径选项,则生成的测试套件中可能会出现额外的路径段。可能需要删除这些路径,以便测试能正确引用身份验证套件。
将模板应用于多项测试
- 右键点击.tst 文件或父测试套件,选择应用智能测试模板。
- 出现提示时,检查智能测试模板规则,然后点击 OK。
包含身份验证设置的测试套件引用将被添加到包含匹配测试的测试套件的开头。
运行测试套件,验证其效果是否符合预期。打开目标测试,点击 HTTP 选项。应能在 HTTP 标题部分看到授权变量。
如果在引用源 .tst 文件时未使用项目变量,且智能测试模板中启用了保留为相对路径选项,则生成的测试套件中可能会出现额外的路径段。可能需要删除这些路径,以便测试能正确引用身份验证套件。