Cypress 是一个流行的前端端到端自动化测试框架,它提供了一个完整的工具箱来编写和运行自动化测试用例。然而在实际使用中,在测试脚本出现问题时,进行调试可能是一个挑战。本文将介绍 Cypress 自动化测试中如何进行 Debug 的一些工具以及技术细节。
Debug 工具
在 Cypress 中,有几种工具可以帮助开发人员进行 Debug。
cy.pause()
cy.pause()
可以在测试中 让 Cypress 暂停测试并在页面中手动操作。在调试过程中,你可以在测试框架停留在这里,进行手动操作调试。此时可以查看页面元素的状态,确认 UI 元素是否正确加载,是否满足期望的状态。
------------------------- ----------- ----------------------------- -----------
在测试代码执行至 cy.pause()
处之前,Cypress 将会暂停运行。此时点击页面上的元素,移动鼠标或在控制台里输入代码都是可以的。
cy.debug()
cy.debug()
可以在测试中打印出更多的调试信息。它可以让 Cypress 输出观察目标的有用信息。它的输出包括当前包含目标的 DOM、这个目标的属性以及其他相关内容。可以在测试执行时选择使用 devtools
的控制台上打印出的信息,来进一步检查你的测试是否执行了你所期望的操作。
----------------------------------------------
在测试代码执行至 cy.debug()
处之前,Cypress 将会暂停运行,打印出 debug()
函数所处的上下文环境的所有信息。这样,可以方便地在当前测试刚出现问题时,获取一些有用的信息。
Chrome 开发者工具
Cypress 使用 Chromium 作为其浏览器内核。这意味着它可以利用 Chrome 开发者工具。
Cypress 中的每个测试用例都有一个“测试驱动程序”,这是一个独立的 Chromium 浏览器实例。可以使用 Cypress 测试 sidebar 中的“dev tools”按钮进入 Chrome 开发者工具。
在开发者工具中,可以使用常规的调试技术来检查和诊断 Cypress 中测试代码的运行问题。例如,可以在 Console 面板中使用 console.log()
输出测试代码执行的状态和值。需要注意,这种方法不能与 Cypress 的链式语法一起使用,因为它不能保证在一个事件流中工作。
如何进行 Debug
定位测试代码
在针对 Cypress 测试的 Debug 之前,我们需要清楚测试代码的逻辑。在测试过程中,由于 Cypress DSL 提供了非常方便的链式语法,能够使我们更快地构建测试用例,但同时,也使得测试代码变得非常深奥和复杂。因此,在进行 Debug 之前,必须弄清楚测试代码的逻辑和各个部分的作用。只有在理解了整个 Cypress 测试的代码结构之后,才能更加准确地定位 Debug 点,并且更加快速地找到解决问题的方法。
使用 cy.debug()
当我们想知道 Cypress 是如何运行一个测试用例的,并且进一步了解代码的执行情况时,可以使用 cy.debug()
函数进行 Debug。
-----------
在测试代码执行至 cy.debug()
处之前,Cypress 将会暂停运行,并打印出 debug()
函数所处的上下文环境的所有信息。这样,可以方便地在当前测试刚出现问题时,获取一些有用的信息。
使用 Chrome 开发者工具进行 Debug
可以使用 Chrome 开发者工具察看 Cypress 内部的一些运行情况。开发者工具提供了很多高级调试技巧,如调试点、单步执行等等。
在工具条的 Console 面板中,可以键入 Cypress API 命令和一些 JavaScript,以便直接在 Cypress 的上下文环境中进行调试。
同时,还可以在 Elements 面板中查看列表,其中包含正在进行测试的页面的当前状态,这也是调试样式和 DOM 结构的理想场所。同时,在 Network 面板中可以通过查看网络请求的路径,排查服务端返回参数是否正确。
使用断言进行 Debug
当设置断言时,是否预期做出的行动与实际上做出的行动不一致时,还可以使用 cy.debug()
进行 Debug。此时会停止测试脚本,这样就可以检查测试软件是否具有正确行为。同时,也可以利用断言库,如 Chai 和 expect,视力测试结果是否符合我们的预期。
-------------------- ------------------- ------------------- --------- ---- ------ -------- -------- ------------------- ------------------- ------- -- -----
使用 Cypress 中的断点进行 Debug
当使用 Cypress 进行过滤时,可以使用 .debug()
打开控制台来产生想要的结果。可以使用 Cypress 中的 cy.pause()
和 cy.wait()
作为中间步骤来等待时间或进行其他测试分支考虑。可以使用函数的返回值或调试语句等控制代码流程,来进行 Debug 点的选择。
-------------------------------- -- -----------
总结
通过使用 Cypress 内置的 Debug 工具、Chrome 浏览器控制台以及断言库,可以非常高效地获得测试代码的反馈。可以通过打印、使用断言以及在框架中的“测试驱动器”等操作来帮助调试过程。同时在执行测试代码前,合理安排时间来熟悉测试代码的结构和逻辑,这样可以快速定位问题和 Debug,最终达到更快、更准的测试效果。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/649a6ebd48841e989475154e