如何获取API响应时间?基于Cypress拦截请求的技术问询
解决Cypress拦截请求获取响应时间时的undefined报错
你遇到的response.duration为undefined的问题,是因为该属性并非Cypress拦截响应对象的标准内置属性,无法保证在所有场景下都存在。
要正确获取API请求的响应时间,应该使用Cypress拦截对象中可靠存在的request.startTime和response.receivedTime属性,通过两者的差值计算实际响应时长:
cy.intercept("PATCH", "https://api.website.com/b2b2/**").as("myAPP") cy.wait("@myAPP").then(({ request, response }) => { // 计算从请求发起至响应接收的时长(毫秒) const responseTime = response.receivedTime - request.startTime; expect(responseTime).to.be.lessThan(2000); expect(response.statusCode).to.equal(200); });
补充说明
request.startTime:请求开始发起的时间戳response.receivedTime:Cypress接收到响应的时间戳- 无论请求是真实发送到服务器还是通过
cy.intercept模拟响应,这两个属性都会被正确赋值,计算结果准确反映请求的处理时长。
内容的提问来源于stack exchange,提问作者Asmoun
相关产品推荐
相关产品推荐

