如何模拟 REST 消息的 HTTP 方法以进行 ServiceNow ATF 测试?

问题描述 投票:0回答:1

如何模拟 REST 消息的 HTTP 方法以进行 ServiceNow ATF 测试?

如果想要测试涉及出站 REST 集成的解决方案,例如“出站 REST 集成”中介绍的解决方案,能够模拟所涉及的 REST 服务会很有帮助。

如何做到这一点?

背景

根据ServiceNow API 参考/REST API/自动化测试框架支持,自动化测试框架 (ATF) 支持入站 - 但不支持出站 - REST 测试步骤。

我希望也支持出站 REST 测试步骤,并能够模拟响应。

testing automated-tests servicenow outbound
1个回答
0
投票

与此同时,我研究了如何模拟 ServiceNow REST 消息 HTTP 方法以进行 ATF 测试。

解决方案(如下)有很多步骤,但并不复杂。

在“出站 REST 集成”中提供的“IPInfo”示例中,解决方案如下:

  1. 目标:模拟 REST 消息“IPInfo”的 HTTP 方法“GetIPInfo”(通常调用“https://ipinfo.io/${ipaddress}/${special_field}”)。

  2. 创建脚本化 REST API,例如在范围“x_1234567_iplookup”中,API ID 为“mock_ipinfo_io_api”。

    1. 在其中创建脚本化的 REST 资源,以将 REST 消息“IPInfo”匹配到模拟:

      活动:假

      相对路径:/{ipaddress}/{specific_field}

      需要身份验证: false

      脚本:

(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {


    response.setContentType('application/json; charset=utf-8');
    response.setStatus(200);
    var writer = response.getStreamWriter();


    // Only the "city" field will be tested in this example.
    let responseJson = {
        "ip": "8.8.8.8",
        "hostname": "dns.google",
        "anycast": true,
        // This is the value that will be tested:
        "city": "Mock City",
        "region": "California",
        "country": "US",
        "loc": "37.4056,-122.0775",
        "org": "AS15169 Google LLC",
        "postal": "94043",
        "timezone": "America/Los_Angeles",
        "readme": "https://ipinfo.io/missingauth"
    };
    writer.writeString(JSON.stringify(responseJson));


})(request, response);
  1. 创建测试:

    启用参数化测试:true

    1. 独家参数定义:

      列标签 列名称 类型 参考 参考质量。状况
      预计城市 u_预期_城市 字符串(完整UTF-8)
      给定 HTTP 方法 u_http_方法 参考 HTTP 方法
      给定实例名称 u_instance_name 参考 系统属性 名称是实例名称
      给定的IP地址 u_ip_地址 字符串
      给定模拟路径 u_given_mock_endpoint 字符串
      给定模拟脚本化 REST 资源 u_given_mocking_scripted_rest_resource 参考 脚本化 REST 资源
    2. 创建测试运行数据集:

      给定的IP地址:8.8.8.8

      给定实例名称:instance_name

      给定模拟路径:/api/x_1234567_iplookup/mock_ipinfo_io_api/${ipaddress}/${specific_field}

      给定 HTTP 方法:GetIPInfo

      预计城市:模拟城

      给定模拟脚本化 REST 资源:通过 IP 地址获取给定字段

    3. 创建测试步骤:

      1. 记录更新

        注意:激活mocking服务。

        断言类型:记录已成功更新

        表:脚本化 REST 资源 [sys_ws_operation]

        记录:(参数➛给定模拟脚本化REST资源)

        字段值:Active := true

      2. 记录更新

        注意:将 HTTP 方法重定向到模拟服务。

        断言类型:记录已成功更新

        表:HTTP 方法 [sys_rest_message_fn]

        记录:(参数➛给定的HTTP方法)

        字段值:https://(参数➛给定实例名称➛值).service-now.com(参数➛给定模拟路径)

      3. 打开新表格

        表:IP 地址信息

      4. 设置字段值

        表:IP 地址信息

        字段值:IP 地址 :=(参数➛给定 IP 地址)

      5. 提交表格

      6. 记录查询

        超时:15秒

        断言类型:至少有一条记录与查询匹配

        表:IP 地址信息

        条件:

        1. 'Sys ID'是(第5步:提交表格➛记录)

        2. ‘城市’为(参数➛期望城市)

    4. 标记互斥(!)测试:

      1. 访问模拟的 HTTP 方法的任何其他测试。
  2. 执行测试。

如果有人希望导入并查看上述解决方案,可以从我的 GitHub 存储库克隆

© www.soinside.com 2019 - 2024. All rights reserved.