前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Cypress系列(70)- server() 命令详解

Cypress系列(70)- server() 命令详解

作者头像
小菠萝测试笔记
发布2020-10-28 10:27:59
4110
发布2020-10-28 10:27:59
举报

如果想从头学起Cypress,可以看下面的系列文章哦

https://www.cnblogs.com/poloyy/category/1768839.html

作用

  • 启动服务器以开始将响应路由到 并更改网络请求的行为

cy.route()

  • 前置知识:熟悉 命令

.route()

语法格式

代码语言:javascript
复制
cy.server()
cy.server(options)

options 参数

作用
  • 作为默认值,它们被合并到 中

cy.route()

  • 作为所有请求的配置行为
以下选项被合并为 cy.route() 的默认选项
以下选项控制服务器,将会影响所有请求的行为
命令执行结果
  • 执行结果是 null
  • 且后续不能再链接其他命令

没有参数的栗子

代码语言:javascript
复制
// 启动服务器
cy.server()
  • 任何与 不匹配的请求都将传递到服务器,除非设置了 force404,这样请求变成 404 和拿到一个空 response

cy.route()

  • 与 options.ignore 函数匹配的任何请求都不会被记录或存根(logged、stubbed)
  • 将在命令日志中看到名为(XHR Stub)或(XHR)的请求

带有参数的栗子

进入演示项目目录下

注:演示项目是 cypress 提供的,如何下载可看 Cypress 系列文章的一开始几篇都有写

代码语言:javascript
复制
cd C:\Users\user\Desktop\py\cypress-example-recipes\examples\logging-in__xhr-web-forms
启动演示项目
代码语言:javascript
复制
npm start
浏览器访问项目
代码语言:javascript
复制
http://localhost:7079/
测试代码
代码语言:javascript
复制
context('route 的栗子', function () {

    const username = 'jane.lane'
    const password = 'password123'

    before(function () {
        cy.visit('http://localhost:7079/')
    })

    it('栗子1', function () {
        cy.server({
            method: 'POST',
            status: 503,
            delay: 1000,
            headers: {
                'x-token': 'abc-123-foo-bar'
            }
        })
        cy.route({
            url: '**/login',
            response: {
                success: false,
                data: 'Not success'
            },
        }).as("login")
        cy.get("input[name=username]").type(username)
        cy.get("input[name=password]").type(`${password}{enter}`)
        cy.wait('@login').then((res) => {
            cy.log(res)
            expect(res.status).to.eq(503)
            expect(res.responseBody.data).to.eq('Not success')
            expect(res.responseHeaders).to.have.property('x-token', 'abc-123-foo-bar')
        })
    });
})
测试结果

启动服务器,关闭服务器的栗子

测试代码
代码语言:javascript
复制
it('栗子2', function () {
    cy.server()
    cy.route({
        url: '**/login',
        method: 'POST',
        status: 503,
        response: {
            data:"success"
        }
    }).as("login")
    cy.get("input[name=username]").type(username)

    //第一次发出请求
    cy.get("input[name=password]").type(`${password}{enter}`)
    cy.wait('@login').then((res) => {
        expect(res.status).to.eq(503)
        
        // 关闭服务器
        cy.server({
            enable: false
        })
    })

    cy.visit('http://localhost:7079/')
    cy.get("input[name=username]").type(username)

    //第二次发出请求
    cy.get("input[name=password]").type(`${password}{enter}`)
});
测试结果

第二个请求虽然被路由监听到了,但是因为服务器关闭了,所以并没有获取路由的 status、response

注意事项

  • 可以在启动 之前启动服务器 cy.server()

cy.visit()

  • 通常,应用程序在加载时可能会立即发出初始请求(例如,对用户进行身份验证)
  • Cypress 可以在 之前启动服务器并定义路由( cy.route() )

cy.visit()

  • 下次访问时,服务器 + 路由将在应用程序加载之前立即应用
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作用
  • 语法格式
    • options 参数
      • 作用
      • 以下选项被合并为 cy.route() 的默认选项
      • 以下选项控制服务器,将会影响所有请求的行为
      • 命令执行结果
      • 进入演示项目目录下
      • 启动演示项目
      • 浏览器访问项目
      • 测试代码
      • 测试结果
      • 测试代码
      • 测试结果
  • 没有参数的栗子
  • 带有参数的栗子
  • 启动服务器,关闭服务器的栗子
  • 注意事项
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档