1

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

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

4

4 回答 4

1

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

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

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

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

于 2018-10-11T06:34:15.177 回答
1

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

Cucumber.js是一种行为驱动开发框架,可以使 API 测试更具可读性和可管理性。

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

在 Node.js 中发出 HTTP 请求的 5 种方法

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

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

于 2018-03-01T07:33:44.880 回答
0

你可以使用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。

参考:更多 请看这个

于 2018-08-23T12:04:27.140 回答
0

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

该设计将非常具体到您的项目。

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

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

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

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

于 2018-08-14T04:55:35.333 回答