iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >cypress如何测试本地web应用
  • 528
分享到

cypress如何测试本地web应用

2023-06-30 17:06:10 528人浏览 独家记忆
摘要

这篇文章主要介绍“cypress如何测试本地WEB应用”,在日常操作中,相信很多人在cypress如何测试本地web应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”cypress如何测试本地web应用”的疑

这篇文章主要介绍“cypress如何测试本地WEB应用”,在日常操作中,相信很多人在cypress如何测试本地web应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”cypress如何测试本地web应用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

cypress测试本地web应用

一、启动本地应用

在前面几章内容中,代码示例都是用的官方文档的网页进行测试的。那个环境相当于一个线上的生产环境,而且是cypress官方的,咱们除了正常访问
啥也做不了。启动本地应用就是启动你自己开发的web应用,比如我本地的测试平台的前端应用。

不过应该还会有小伙伴好奇,为什么就不能直接用线上已经部署好的,而非要用本地的?
这里,我概述一下官方的回答,以供参考:

  • 在日常的本地开发中,cypress是围绕着构建、优化工具

  • 数据存根。

  • 最重要的还是你要有控制这个应用的能力,比如,根据需要随时更改调整应用的一些配置之类。

不过,也不是说线上环境和本地环境,你必须二选一才行,也可以都写测试,这也是一个实用场景。比如,大多数的测试可以在本地环境跑,然后留一些
测试可以作为冒烟测试用,可以用到部署好的环境上去。

二、访问本地应用

之前演示用的代码用不上了,现在可以新建一个测试文件home_page_spec.js

describe('The Home Page', () => {  it('successfully loads', () => {    cy.visit('Http://localhost:8010') // 这里换成你自己本地的url  })})

访问成功。

cypress如何测试本地web应用

三、配置Cypress

在Cypress项目中,其实有个配置文件cypress.JSON,就在项目根目录下,内容默认为空{}
在这里可以根据需要来添加cypress的各种配置,比如说 测试文件的位置、默认超时时间、环境变量、用哪个报告等等,这里暂时不展开了。

不过现在,可以在这里加一个baseUrl的配置,因为后续访问的路径都是以这个url为基础的。这样就可以给cys.visit()cys .request()这种命令
自动添加baseUrl前缀了。

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

现在访问一个相对路径试下:

describe('The Home Page', () => {  it('successfully loads', () => {    cy.visit('/')  })})

访问成功。

cypress如何测试本地web应用

到这里,就可以开始写你本地应用的测试了,至于怎么写,就还是取决不同的项目需求了。

四、Seeding data

这里我理解为初始化数据,比如要测试一个页面的登录,可能就得向数据库里插入一个用户数据,方便使用。在之前用selenium的时候,
通常就在setup 和 teardown里来安排初始化测试数据的准备和清理。

在cypress中,也会有一些支持做这些额外拓展的事情的方法,通常是这3种:

cy.exec(),可以执行系统命令。

cy.task(),可以通过pluginsFile来在node中运行代码。

cy.request(),可以发送http请求。

比如下面这段代码,演示的就是在测试执行之前,要做一系列事情来完成数据的初始化:

describe('The Home Page', () => {  beforeEach(() => {    // reset and seed the database prior to every test    cy.exec('npm run db:reset && npm run db:seed')    // seed a post in the DB that we control from our tests    cy.request('POST', '/test/seed/post', {      title: 'First Post',      authorId: 1,      body: '...',    })    // seed a user in the DB that we can control from our tests    cy.request('POST', '/test/seed/user', { name: 'Jane' })      .its('body')      .as('currentUser')  })  it('successfully loads', () => {    // this.currentUser will now point to the response    // body of the cy.request() that we could use    // to log in or work with in some way    cy.visit('/')  })})

这种用法其实本质上来说没什么错的,但实际上每个测试都要与服务器或者浏览器交互的,这难免会拖慢测试的效率。对于这个问题,cypress
提供了些更快更好的解决方案。

1. Stubbing the server

这里就是我理解的mock了,断开与后端服务的依赖。既然我需要跟服务器交互才可以拿到需要的返回数据,如果能绕开交互,直接需要用啥数据就有啥数据,连后端应用都
不需要启了,岂不美哉?关于stub内容很多,后续使用到再继续分解。

2. 解决登录问题

在以往编写测试的过程中,登录一直是一个比较大的问题。你只有登录了,才可以进行后续的测试活动。那么如果我们把登录抽离出去,然后每个测试执行之前都进行一次登录操作,
理论上来讲,也是可行的。

describe('The Login Page', () => {  beforeEach(() => {    // reset and seed the database prior to every test    cy.exec('npm run db:reset && npm run db:seed')    // seed a user in the DB that we can control from our tests    // assuming it generates a random passWord for us    cy.request('POST', '/test/seed/user', { username: 'jane.lane' })      .its('body')      .as('currentUser')  })  it('sets auth cookie when logging in via fORM submission', function () {    // destructuring assignment of the this.currentUser object    const { username, password } = this.currentUser    cy.visit('/login')    cy.get('input[name=username]').type(username)    // {enter} causes the form to submit    cy.get('input[name=password]').type(`${password}{enter}`)    // we should be redirected to /dashboard    cy.url().should('include', '/dashboard')    // our auth cookie should be present    cy.getCookie('your-session-cookie').should('exist')    // UI should reflect this user being logged in    cy.get('h2').should('contain', 'jane.lane')  })})

只不过这样整个测试下来就变得非常的慢。所以,cypress呼吁不要在每次测试前使用UI登录。

当然了,你正儿八经写的测试代码里肯定是测试UI的,但是如果这个测试涉及到其他前置的一些数据状态的依赖,那么要避免通过UI去设置。
这里官方还举了个购物车的例子加以说明。

假设要测试购物车的功能。要进行测试的话,得把产品添加到购物车中。那么产品从哪里来? 我是否要使用UI登录到管理后台,然后创建所有的产品,包括它们的描述、类别和图片?
如果这样做了,那是不是所有的产品我都要访问一遍并且加到购物车里呢?

答案显然是否定的,至于怎样做最合适,还得到后续的学习中再分享。

继续回到上面UI登录的问题,因为cypress与selenium不同,在cypress中,可以通过使用cy.request()来跳过使用UI的需要,cy.request()可以自动获取和设置cookie,完成登录态的设置。那么上述的用UI执行登录的代码就可以优化成:

describe('The Dashboard Page', () => {  beforeEach(() => {    // reset and seed the database prior to every test    cy.exec('npm run db:reset && npm run db:seed')    // seed a user in the DB that we can control from our tests    // assuming it generates a random password for us    cy.request('POST', '/test/seed/user', { username: 'jane.lane' })      .its('body')      .as('currentUser')  })  it('logs in programmatically without using the UI', function () {    // destructuring assignment of the this.currentUser object    const { username, password } = this.currentUser    // programmatically log us in without needing the UI    cy.request('POST', '/login', {      username,      password,    })    // now that we're logged in, we can visit    // any kind of restricted route!    cy.visit('/dashboard')    // our auth cookie should be present    cy.getCookie('your-session-cookie').should('exist')    // UI should reflect this user being logged in    cy.get('h2').should('contain', 'jane.lane')  })})

在官方看来,这个相比于selenium是一个大优点,其实我觉得也不尽然。这个优化思想是对的,不过在之前使用selenium的时候,虽然它内置的方法不支持这么做,但是可以借助
requests库来迂回解决直接像后端发送请求的问题。

到此,关于“cypress如何测试本地web应用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: cypress如何测试本地web应用

本文链接: http://www.lsjlt.com/news/330608.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • cypress如何测试本地web应用
    这篇文章主要介绍“cypress如何测试本地web应用”,在日常操作中,相信很多人在cypress如何测试本地web应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”cypress如何测试本地web应用”的疑...
    99+
    2023-06-30
  • cypress测试本地web应用
    目录cypress测试本地web应用一、启动本地应用二、访问本地应用三、配置Cypress四、Seeding data1. Stubbing the server2. 解决登录问题c...
    99+
    2024-04-02
  • cypress测试工具如何使用
    本篇内容主要讲解“cypress测试工具如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“cypress测试工具如何使用”吧!一、什么是cypressCypress称自己是下一代的web前端...
    99+
    2023-06-30
  • 如何测试vps到本地的速度
    要测试vps到本地的速度,可以使用以下方法:1. 使用ping命令:打开命令提示符(Windows)或终端(Mac或Linux),输...
    99+
    2023-08-19
    vps
  • 如何构建一个可测试的Go Web应用
    如何构建一个可测试的Go Web应用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。几乎每一个程序员都赞同测试是重要的,但测试以多种方式让写...
    99+
    2024-04-02
  • Dreamweaver如何创建本地测试服务器
    小编给大家分享一下Dreamweaver如何创建本地测试服务器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!如何用Dreamweaver创建本地测试服务器。打开d...
    99+
    2023-06-08
  • Web应用渗透测试框架Arachni
    Web应用渗透测试框架Arachni...
    99+
    2023-06-04
  • 如何使用Golang函数进行Web应用程序测试
    在 go 中进行函数测试的步骤包括:创建测试文件并导入相关包。定义测试函数,包括要测试的不同输入/预期组合。调用函数并验证结果是否符合预期。运行测试以验证函数的正确性。 如何在 Go ...
    99+
    2024-05-03
    go web测试 golang
  • cypress中丰富的调试工具如何使用
    这篇文章主要讲解了“cypress中丰富的调试工具如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“cypress中丰富的调试工具如何使用”吧!cypress调试工具Cypress附带了...
    99+
    2023-06-30
  • 如何测试测试用例?
    编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天编程网就整理分享《如何测试测试用例?》,文章讲解的...
    99+
    2024-04-05
  • Holer如何实现手机APP应用外网访问本地WEB应用
    小编给大家分享一下Holer如何实现手机APP应用外网访问本地WEB应用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 准备工作1.1 安装并启动WEB服务端...
    99+
    2023-06-05
  • linux如何搭建web测试环境
    搭建Linux上的Web测试环境可以按照以下步骤进行:1. 安装Apache Web服务器:在终端中运行以下命令安装Apache:`...
    99+
    2023-08-23
    linux
  • Web应用扫描测试工具Vega有什么用
    这篇文章给大家分享的是有关Web应用扫描测试工具Vega有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Web应用扫描测试工具VegaVega是Kali Linux提供的图形化的Web应用扫描和测试平台工具...
    99+
    2023-06-04
  • web开发如何进行单元测试
    这篇文章主要介绍“web开发如何进行单元测试”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“web开发如何进行单元测试”文章能帮助大家解决问题。软件软件是可以改变的。...
    99+
    2024-04-02
  • PHP 框架安全指南:如何测试 Web 应用程序的安全性?
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-23
  • python Web应用程序测试selenium库使用用法详解
    目录一、声明浏览器对象二、访问页面并获取网页html三、查找元素四、元素交互操作-搜索框传入关键词进行自动搜索五、交互动作,驱动浏览器进行动作,模拟拖拽动作,将动作附加到动作链中串行...
    99+
    2024-04-02
  • 如何利用 BATS 测试 Bash 脚本和库
    本篇内容介绍了“如何利用 BATS 测试 Bash 脚本和库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Bash 自动测试系统可以使 Ba...
    99+
    2023-06-15
  • Dreamweaver如何添加本地的浏览器为测试浏览器
    这篇文章将为大家详细讲解有关Dreamweaver如何添加本地的浏览器为测试浏览器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。方法如下这时当然是打开dreamweaver 的 主界面,新建一个html文...
    99+
    2023-06-08
  • Kali渗透测试之使用Metasploit对Web应用的攻击
    目录实 验 环 境实 验 步 骤1. 在Kali中启动并进入msf62. 启动web_delivery模块3. 设置木马类型、木马主控端IP地址和端口4. 执行run5. 在靶机DV...
    99+
    2024-04-02
  • 如何使用Visual Studio Code调试PHP CLI应用和Web应用
    在按照Jerry的公众号文章 什么?在SAP中国研究院里还需要会PHP开发? 进行XDebug在本地的配置之后,如果想使用Visual Studio Code而不是Eclipse来调试PHP应用,步骤也比较简单。启动WAMP服务器,确保xd...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作