自动化测试框架[Cypress 自定义Mock Server]

本文介绍了如何利用Cypress测试工具和JSON-Server搭建MockServer,进行前端Ajax请求的测试。从创建Mock数据,启动JSONServer,到配置Cypress和编写测试用例,包括GET、POST、PUT和DELETE等HTTP方法的测试,详细阐述了整个测试流程,并展示了如何验证响应内容。

以前端向后端发送Ajax/XHR请求为例,Cypress允许你的测试直接访问XHR对象,从而能在整个软件生命周期里轻松测试Ajax/XHR请求并对它的属性进行断言,此外Cypress还允许对请求返回结果进行Stub和Mock

搭建Mock Server

以json-server为例,搭建一套REST API格式的Mock Server,首先执行npm install -g json-server进行安装,然后执行mkdir mockServerSample创建一个新的项目,

准备Mock数据

在新项目的根目录下创建一个json文件并命名为db.json,将如下内容写入

{
	"user":[
		{"id":1,"title":"Test","name":"davieyang"}
	],
	"books":[
		{"id":1,"name":"Selenium","year":"year"}
	]
}

启动JSON Server

将命令行引导到新建的项目根目录下,cd mockServerSample,然后执行命令json-server --watch db.json启动JSON Server

查看Mock资源

服务启动后,用浏览器便可以查看资源,例如http://localhost:3000/userhttp://localhost:3000/bookshttp://localhost:3000,到此一个简单的Mock Server建完了

使用Mock Server进行测试

安装并配置

首先,在mockServerSample目录下安装Cypress,然后配置cypress.json,写入如下内容

{
	"baseUrl":"http://localhost:3000"
}

配置package.json,写入如下内容

"script":{
	"mock":"cypress open",
}

创建测试用例

在integration路径下,创建测试用例,例如如下典型例子

//testGet.js
describe('测试GET',()=>{
	it('测试GET', ()=>{
		cy.request('/user')
			.its('headers')
			.its('content-type')
			.should('include','application/json')
	})
})
//testGet.js
describe('测试GET',()=>{
	it('测试GET', ()=>{
		// "?id=1"获取id=1的user
		cy.request('/user?id=1')
			.its('headers')
			.its('content-type')
			.should('include','application/json')
	})
})
//testGet.js
describe('测试GET',()=>{
	it('测试GET', ()=>{
		//“?q=davieyang”, 模糊查询,获取所有包含davieyang的列表项
		cy.request('/user?q=davieyang')
			.its('headers')
			.its('content-type')
			.should('include','application/json')
	})
})
//integration文件夹下创建testPost.js
describe('测试POST APAI', ()=>{
	const item={"id":2, "title":"tony", "name":"tony"}
	it('POST会新增一个用户', ()=>{
		cy.request({
			method:'POST',
			//添加user信息
			url:'/user',
			headers:{'Content-Type':'application/json'},
			body:item
			})
		cy.request('/user/').then((res)=>{
			expect(res.status).to.be.equal(200)
			expect(res.body.length).to.be.equal(5))
			})
		})
})
//integration文件夹下创建testPut.js
describe('测试PUT API', ()=>{
	const item={'title':'tony', 'name':'tony'}
	it('PUT会更新一个用户', ()=>{
		cy.request({
			method:'PUT',
			//制定更新id为1的用户
			url:'/user/1',
			headers:{'Content-Type':'application/json'},
			body:item
			})
		cy.request('/user/1').then((res)=>{
			expect(res.status).to.be.equal(200)
			expect(res.body.name).to.be.equal('tony')
			expect(res.body.title).to.be.equal('tony')
			})
		})
})
//integration文件夹下创建testDelet.js
describe('测试DELETE API', ()=>{
	const id=2
	it('DELETE删除一个用户', ()=>{
		cy.request({
			method:'DELETE',
			//删除user信息
			url:'http://localhost:3000/user/${id}',
			headers:{'Content-Type':'application/json'},
			})
		cy.request('http://localhost:3000/user').then((res)=>{
			expect(res.status).to.be.equal(200)
			expcet(res.body.length).to.be.equal(1)
			})
		})
})

运行测试

在Cypress以交互模式运行测试文件,可在命令日志中查看到详细的请求及返回结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Davieyang.D.Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值