在我们的项目中,我们需要自动化用 Node.js 编写的 API,它使用 GraphQL 和 REST,为此我们必须开发一个必须支持(同步、异步调用)的 API 自动化框架。
是否有任何好的实践设计模式来设置 API 自动化框架?
在我们的项目中,我们需要自动化用 Node.js 编写的 API,它使用 GraphQL 和 REST,为此我们必须开发一个必须支持(同步、异步调用)的 API 自动化框架。
是否有任何好的实践设计模式来设置 API 自动化框架?
严格地说,仅关于设计模式:您可以使用 Builder 模式并以单一职责原则为后盾。
就个人而言,在我们的组织中,我们使用带有 Builder 模式方法的RestAssured驱动的框架。
作为结构的示例,我们有数据传输对象来保存 API 的请求和响应。然后我们有专门用于访问 API 的实现类。
如果您打算像我们一样使用TestNG,那么您可以拥有一个带有单独DataProvider
类的测试类,这有助于代码分离和更容易调试。
您可以考虑使用 Cucumber.js 以及流行的 REST 客户端包之一。
Cucumber.js是一种行为驱动开发框架,可以使 API 测试更具可读性和可管理性。
下面的文章比较了几个可用于自动化 RESTful API 的包
有一些关于 API 测试的示例以及 Cucumber.js 框架。
此外,要创建测试脚本,请考虑将CukeTest创作与 Postman 一起使用(可用于良好的调试目的)
你可以使用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。
参考:更多 请看这个
对于 GraphQL API 的集成测试,我使用了 graphql-tester。
该设计将非常具体到您的项目。
如果您有自己的 API 服务器,
a. 调用 API。
湾。您可以点击后端(数据库)并检查数据库中的预期字段是否已更新。
C。验证 HTTP 响应。
如果您为 3rd 方 API 编写了包装器,请了解第三方 API 的响应并使用模拟服务器/JSON 服务器模拟它们。
对于集成测试(黑盒),在 REST/GraphQL 上无关紧要(一切都是 HTTP 调用)。尝试选择一种可以获取所有客户端(DB、HTTP 等)的语言。
在开始测试用例之前,有一个健全的测试用例,就像所有服务都应该启动并运行一样。