业务场景中,API 测试不可或缺。一些不允许直接运行或者需要特殊环境配置的依赖,例如它们只能在某个特定时间运行或者需要进行特定的资源部署等。为了避免代码和测试之间的耦合,很多测试人员喜欢用代码分离测试和开发。Cypress 是一个完美的测试框架,可以用来分离测试代码和开发代码。本文将重点讲述如何处理无 UI 场景下的 API 测试。
Cypress 如何处理无 UI 场景下的 API 测试
使用 cy.request()
命令调用 API 接口
Cypress 并不支持直接对 API 接口测试。但是我们可以使用 cy.request()
命令来发起网络请求,从而测试 API 接口。使用 cy.request()
命令,我们可以轻松地测试 GET、PUT、POST 等请求,还可以使用参数设置响应超时时间、代理等。
这里我们以测试接口状态码为例。下面是示例代码:
-- -------------------- ---- ------- ------------- ------ -- -- - ---------- --- - --- ------ ------ -- -- - ------------ ------- ------ ---- --------------------------------------------- ------------------ -- - ----------------------------------- --- --- ---
在这个例子中,我们用了一个基本的 GET 请求,用 Cypress 发起请求并从响应体中获取状态码。如果状态码 200,则测试通过。
除了 cy.request()
命令之外,我们还可以使用其他命令来测试 API 接口。例如,我们可以使用 cy.server()
命令捕捉所有的 AJAX 请求,并对它们进行分类、修改或断言。但是这超出了本文的讨论范畴。
在非 UI 场景下使用 Cypress 如何进行 API 测试
上面的例子展示了在 UI 场景下进行 API 测试、断言等。但是如果在 UI 场景下,我们无法进行 API 测试怎么办?本节中,我们将介绍如何使用 Cypress 在非 UI 场景下进行 API 测试。
下面是示例代码:
-- -------------------- ---- ------- ----- ------------- - ------------------- ----- ---- - ---------------- ----- -------- - --------------------- ------------------- ------------------------ ------ ---------- - ---------------- ------------- - ------ -------------- - ---- ------------------------------------------------ ---------------- ------------------ ---- - -------------------------------- ------------------------------------ ------- --- --- ---
在这个例子中,我们安装了 request
库和 chai 的 http()
部分。request
库允许我们通过发送单独的请求来测试 API,也可以设置超时时间、COOKIE 等。chai 的 http()
部分允许我们测试 API 接口的状态码、响应体等。
使用 Cypress 执行 API 测试
无论是在 UI 场景下还是在非 UI 场景下,我们都已经了解了如何使用 Cypress 进行 API 测试。下面我们将介绍如何使用 Cypress 执行 API 测试。
describe('My First Test', () => { it('Visits Google', () => { cy.request('http://www.google.com') }) })
当使用 cy.visit()
命令时,Cypress 将在浏览器中打开 URL 并且在完成页面加载之后运行检查。而在本例中,我们使用了 cy.request()
命令发送 HTTP 请求,而没有使用 cy.visit()
命令加载任何页面。
使用 Cypress 中的 API 测试是一个简单而直观的过程。与 UI 测试相比,API 测试更为灵活,也具有更高的可复用性。如果您想尽可能多地覆盖您的代码,那么使用 Cypress 进行自动化 API 测试是绝对不可少的。
总结
在本文中,我们讨论了如何使用 Cypress 处理无 UI 场景下的 API 测试和代码分离测试和开发。在这个过程中,我们发现了 cy.request()
命令和其他命令可以用来测试 API 接口的状态码和响应体等。此外,我们还讨论了如何使用 Cypress 在非 UI 场景下进行 API 测试。最后,我们介绍了如何在 Cypress 中使用 API 测试。如果您采用本文所述的建议,你将能够更轻松地进行 API 测试并确保业务稳定性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c4026183d39b48817d299b