【问题标题】:Best practice Design Pattern for API Automation FrameworkAPI 自动化框架的最佳实践设计模式
【发布时间】:2017-10-27 06:38:15
【问题描述】:

在我们的项目中,我们需要自动化使用 Node.js 编写的 API,它使用 GraphQL 和 REST,为此我们必须开发一个必须支持(同步、异步调用)的 API 自动化框架。

是否有任何好的实践设计模式来设置 API 自动化框架?

【问题讨论】:

  • 什么是 API 自动化?供测试用?对于文档?

标签: node.js rest graphql web-api-testing apollo-client


【解决方案1】:

您可以考虑使用 Cucumber.js 以及流行的 REST 客户端包之一。

Cucumber.js 是行为驱动开发框架之一,可以使 API 测试可读性更强。

下面的文章比较了几个可用于自动化 RESTful API 的包

5 Ways to Make HTTP Requests in Node.js

有一些samples关于API测试以及Cucumber.js框架。

另外,要创建测试脚本,请考虑将 CukeTest 创作与 Postman 一起使用(用于良好的调试目的)

【讨论】:

    【解决方案2】:

    对于 GraphQL API 的集成测试,我使用了graphql-tester

    设计将非常适合您的项目。

    1. 如果您有自己的 API 服务器,
      一种。调用 API。
      湾。您可以点击后端(数据库)并检查数据库中的预期字段是否已更新。
      C。验证 HTTP 响应。

    2. 如果您为第三方 API 编写了包装器,请了解第三方 API 的响应并使用模拟服务器/JSON 服务器模拟它们。

    对于集成测试(黑盒),在 REST/GraphQL 上无关紧要(一切都是 HTTP 调用)。尝试选择一种可以获取所有客户端(DB、HTTP 等)的语言。

    有一个健全的测试用例,在你开始测试用例之前,所有服务都应该启动并运行。

    【讨论】:

      【解决方案3】:

      您可以使用 mocha.js 。根据官方网站“Mocha 是一个功能丰富的 JavaScript 测试框架,运行在 Node.js 和浏览器中,使异步测试变得简单而有趣。Mocha 测试串行运行,允许灵活准确的报告,同时将未捕获的异常映射到正确的测试用例。托管在GitHub。"

      为什么要选择它: Mocha 可以在 node.js 或浏览器中运行。与 Jasmine 等其他 javascript 测试框架相比,您可以看到 Mocha 对异步测试的处理是选择它的关键因素。在测试 API 时,我们需要向一个端点发送一些数据,并使用返回的数据来调用另一个端点。例如,我们需要获取一个用户,然后获取该用户的 id 以获取属于该用户的所有位置。

      Chai 与 Jasmine 不同,必须使用额外的断言库来补充 Mocha。 Chai 是一个断言库,可以让你选择你最喜欢的断言接口,包括“assert”、“expect”和“should”。

      为什么要选择它:虽然 Mocha 可以与任何断言库一起使用,而 Chai 可以与任何 javascript 测试框架一起使用,但许多 javascript 开发人员选择将它们一起使用。我们可以使用 Chai 的“expect”接口将自然语言断言链接在一起,这样我们就可以彻底测试从我们的 API 端点返回的 JSON。

      参考:更多see this

      【讨论】:

        【解决方案4】:

        严格来说,仅关于设计模式:您可以使用 Builder 模式并以单一职责原则为后盾。

        就个人而言,在我们的组织中,我们使用 RestAssured 驱动的框架和 Builder 模式方法。

        作为结构示例,我们有数据传输对象来保存 API 的请求和响应。然后我们有专门用于访问 API 的实现类。

        如果您打算像我们一样使用 TestNG,那么您可以拥有一个带有单独 DataProvider 类的测试类,这有助于代码分离和更轻松的调试。

        【讨论】:

          猜你喜欢
          • 2021-10-24
          • 1970-01-01
          • 2020-07-13
          • 2011-07-18
          • 2012-02-24
          • 1970-01-01
          • 2023-03-28
          • 1970-01-01
          • 2018-03-08
          相关资源
          最近更新 更多