使用Cypress进行API测试和UI自动化的详细指南

694 阅读5分钟

今天几乎所有的网络应用和解决方案都是由存在于JavaScript上的框架运行的。这些解决方案包括后端和前端开发解决方案。为了使他们的工作流程更容易、更顺畅,开发专家需要QA自动化框架,可以同时进行UI和API测试。测试过程对于检查和验证你的系统流程是必要的,并确保一切符合要求。

测试前端质量是API和UI开发的一个重要部分。测试过程应确保工作流程的质量,并应满足终端用户的要求。

在一个地方测试API和UI需要几个框架和工具,包括Postman、Selenium、Nightwatch和Ketalan等等。然而,我们在这里主要关注的是Cypress,以及它为用户提供的可行性。

在这篇文章中,我们看一下QA测试的可行性,以及Cypress如何帮助它。我们通过UI自动化和API制定的组合镜头来审视QA测试。请继续关注我们,了解更多。

了解Cypress

在我们进一步行动之前,让我们了解Cypress的功能。Cypress是一个开源的测试运行器,安装在本地,作为仪表板服务工作,为你记录你的测试。该解决方案旨在实现下一代应用程序的自动化,并创建能够保持较长时间连接和活动的Web应用程序。

Cypress对于从事以Vue.js、Node.js和其他一些流行技术编程的网络应用的开发者来说是必要的。Cypress在Node.js服务器上运行,并与你的应用开发过程同时进行。

虽然大多数测试解决方案在浏览器之外工作,但Cypress则相反。Cypress可以对开发过程进行常规抓拍,最终使你能够在命令运行时穿越时空。

Cypress的重要组成部分。

Cypress以其一些新颖的功能和关键组件而闻名。这些功能包括。

  • Cypress可以创建一个模拟版本的服务器,它可以一次性响应和测试不同的情况。
  • Cypress可以在不同的测试运行期间进行快照,帮助你在多种情况下进行时间旅行和测试不同的场景。这是迄今为止比市场上其他产品最全面、最完善的组件。Cypress可以在开发过程中创建屏幕截图,并可以在以后呈现出来供使用。
  • Cypress可以控制不同服务器的反应和功能。
  • Cypress给出一致的结果,易于跟踪。
  • 轻松控制和测试案例,无需服务器参与。
  • 一次性查看所有的屏幕截图,以自动检测故障。

用Cypress进行API测试

通过Cypress进行的API测试也涉及端对端UI测试。端对端测试对于稳定API和准备与所有第三方服务器交互的数据是必要的。

Cypress给应用程序提供了一个进行HTTP请求的机会。

一个可供测试遵循的编码例子是。

describe(“Testing API Endpoints Using Cypress”, () => {
	

	      it(“Test GET Request”, () => {
	            cy.request(“http://localhost:3000/api/posts/1”)
	                 .then((response) => {
	                        expect(response.body).to.have.property('code', 200);
	            })
	      })
	

	      it(“Test POST Request”, () => {
	            cy.request({
	                 method: ‘POST’,
	                 url: ‘http://localhost:3000/api/posts’,
	                 body: {
	                     “id” : 2,
	                     “title”:“Automation”
	                 }
	            }).then((response) => { 
	                    expect(response.body).has.property(“title”,“Automation”); 
	            })
	      })
	

	      it(“Test PUT Request”, () => {
	            cy.request({
	                    method: ‘PUT’,
	                    url: ‘http://localhost:3000/api/posts/2’,
	                    body: { 
	                       “id”: 2,
	                       “title” : “Test Automation”
	                    }
	            }).then((response) => { 
	                    expect(response.body).has.property(“title”,“ Test Automation”); 
	            })          
	      })        
	

	      it(“Test DELETE Request”, () => {
	            cy.request({
	                      method : ‘DELETE’,
	                      url: ‘http://localhost:3000/api/post/2’
	                      }).then((response) => {
	                        expect(response.body).to.be.empty;
	            })	
	      })
	   
	 })

用Cypress编写UI测试

在研究了用Cypress进行API测试的例子后,我们现在看看在Cypress的帮助下进行UI测试的一些可行的例子。这些例子包括。

describe('Testing Google Search', () => {
	

	     // To Pass the Test Case 1 
	

	     it('I can search for Valid Content on Google', () => {
	

	          cy.visit('https://www.google.com');
	          cy.get("input[title='Search']").type('Cypress').type(‘{enter}’);
	          cy.contains('https://www.cypress.io'); 
	

	     });
	

	     // To Fail the Test Case 2
	

	     it('I can navigate to Wrong URL’', () => {
	

	          cy.visit('http://localhost:8080');
	          cy.get("input[title='Search']").type('Cypress').type(‘{enter}’);
	          cy.contains('https://www.cypress.io'); 
	

	     });
	
	});

赛普拉斯的其他可能性

在研究了Cypress的测试和UI自动化的可能性之后,我们现在来看看开发者可以通过该解决方案获得的一些额外好处。

  • 运行重试和测试每个新重试的能力。重试的能力将被记录下来,并进行记录。
  • 与Jenkins进行持续集成,并进行全面的持续部署,以获得全面的结果。
  • 行为驱动开发或BDD,通过Cucumber的综合解决方案进行管理。
  • 自定义命令,易于在所有系统和框架上运行。
  • 环境变量。
  • 执行新操作和添加新组件的插件。
  • 视觉测试工具,确定视觉界面的功效。
  • 库存整合机制。
  • 用于API测试的GraphQL测试机制

赛普拉斯的局限性

除了与Cypress相关的大量好处和组件外,也有一些与之相关的限制。

Cypress拥有巨大的社区支持,并被用作市场上的全栈通信工具。

与Cypress相关的一些限制包括。

  • Cypress不能同时在多个浏览器上运行
  • Cypress不提供对同一时间内多个标签的支持
  • Cypress不提供对iFrames的额外支持。所提供的支持在使用上是有限的。
  • Cypress只支持全栈的JavaScript语言框架。
  • Cypress不能在IE和Safari上运行

Cypress是最受欢迎的测试工具之一。其功能和调试技术可以使QA自动化变得更容易,使开发人员有机会开发新的代码和运行测试。我们希望这个指南具有结论性,并让你对Cypress有一个了解。