首页
学习
活动
专区
圈层
工具
发布

Cypress基础教程:从安装到执行测试全流程

Cypress 是一款现代化的前端自动化测试工具,提供友好的 Test Runner 和丰富的 API,能够快速构建和执行测试用例。...您的计算机上将显示以下屏幕 −然后启动 Test Runner,示例文件夹下有多个 spec 文件可用,如下所示 −要运行特定文件,例如 test2.spec.js,我们必须单击它。...此外,浏览器和停止执行的选项也可用。执行将从以下屏幕开始,其中显示测试步骤、测试用例名称、测试套件、URL、测试持续时间、浏览器尺寸等。...cy 命令:在测试用例中执行具体步骤,无需对象调用,安装节点模块时自动可用。...结合完整的文件结构和简单的 API,能够帮助测试工程师高效构建和维护前端自动化测试项目。掌握本指南内容,你就可以完成从安装、编写测试到执行的全流程,为项目质量保障提供稳定支撑。

25410

你不知道的Cypress系列(11) -- 使用cy.session()加速鉴权。

但这个方法违背了每个测试用例应该是独立的、原子的这个特性。 针对第二个问题,,在同一个测试用例中使用不同账户登录,只能先登出第一个,然后再登录第二个。这无形中增加了整个测试用例的执行时间。...type(username) cy.get('[data-test=password]').type(password) cy.get('#login').click() cy.url...2)Cypress.session API被添加了进来。Cypress.session 是一组与会话相关的辅 助方法,旨在与cy.session() 命令一起使用。...,因此必须在每个测试用例中显式调用 cy.visit() 以访问应用程序中的页面。...总结 使用cy.session(),Cypress仅会在第一次登录时候执行真正的登录操作,在同一个JS文件中的后续任何同个账户的登录操作,都将通过恢复Session的方式来进行。

3.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    从TechRadar看UI自动化测试的未来

    框架架构 让我们先来看看它没有公布的设计架构。 ? 这是一张来自cypress 架构师画出的所谓架构图,其实等于什么都没说,但是我们还是能够通过蛛丝马迹,找到一些重要的信息点。...electron 与termina,driver ,launcher 等玩过Puppeteer的人肯定知道 chrome headless 既可以在命令中直接执行脚本,又可以通过puppeteer调用chrome...没猜错的话,它的底层应该是基于chrome remote-interface这个库,通过在其之上开发出专有的自动化api来控制浏览器。这意味着每个所支持的浏览器都需要一个新的driver。...这是来自官方的文档,所以我们不用再像webdriver那样去封装等待方法,cypress 所有的操作都已经自带了retry功能,直到到达设置的timeout。...难道我不会js是我的错?其实cypress面向的主要对象是前端DEV与QA,cypress的底层与所使用工具都来源于前端,面向的测试也是基于前端,例如api,E2E等。

    2.8K20

    Cypress接口自动化3-定义公共函数获取token给其它接口调用

    Cypress接口自动化3-定义公共函数获取token给其它接口调用 前言 在做接口自动化过程中会把获取token的方法定义公共函数去调用,token分为2种一种登录成功后获得token只使用一次失效,...({ url: "http://api.keyou.site:8000/user/login/", method: 'POST', headers: {"Content-Type...:" + sessionStorage.getItem("Token")) }) 在测试用例中调用beforeEach获取tokeo保证每次请求都会获取一个新的token describe("获取公共接口共其它接口使用...token写入txt中 Cypress.Commands.add('token_txt', function () { cy.request({ url: "http://api.keyou.site.../cypress_files/demo.txt', token) }) }) 通过before调用一次token并给多个接口复用 describe("txt取token", function

    1.5K31

    Cypress系列(14)- 环境变量详解

    比如最常见的:开发环境、测试环境、生产环境的 URL 肯定不一样,我们可以根据不同的环境选择不同的环境变量 这就是为什么我们要学习环境变量的原因 环境变量在以下情况会很有用 不同开发人员,对应的值也可能不同...,比如: cy.request('https://api.acme.corp') // 这将在其他环境中无法使 使用环境变量后 cy.request(Cypress.env('EXTERNAL_API'...)) // 指向动态环境变量 当不同环境运行时,如果需要访问不同的 URL 我们只需要改环境变量即可了,而不用动到代码 baseUrl 前面我们说到可以通过环境变量设置测试套件访问的 URL,这是其中一种方式...baseUrl 的值作为前缀 baseUrl 并且,当你需要访问某些网址或者发起接口请求时,在代码中就可以不用再指定请求的 或者 url 了 host 如何配置 baseUrl 细心的小伙伴已经知道,...代码中调用 cy.visit("") // 错误写法 cy.visit() 记住调用 visit 或 request 时,再怎么样也要传个空字符串 "" ,不能啥都不填哦 通过环境变量来覆盖 baseUrl

    2K20

    Cypress:详解架构原理与环境设置指南

    前端测试的世界变化很快,从 Selenium 时代一路走到如今的现代化测试框架,Cypress 无疑是站在浪潮之巅的那一位。它以“开发者体验优先”的理念迅速成为 Web 自动化测试的主流选择。...但很多同学用过 Cypress 写用例,却没有真正理解它的架构与运行机制,也不清楚环境应该如何正确配置。本文就来系统讲清楚:Cypress 到底是怎么工作的?...Cypress 的核心创新在于: 它并不是像 Selenium 那样通过 WebDriver 间接驱动浏览器,而是把自己嵌入到浏览器内部运行,让测试脚本与被测页面共享同一个运行环境。...Node 进程提供额外能力浏览器能干的事情不多,Cypress 会再起一个 Node 服务来处理系统级任务,例如:文件读写(如下载、上传模拟)截图与录屏定制任务(task)调用后端 API你可以把它理解成...按环境拆分 baseUrl将 dev/test/prod 的 URL 统一配置,加上环境变量切换,可以让自动化在不同环境无缝执行。2. 统一封装可复用模块比如登录、接口 mock、业务流程节点。

    24310

    Cypress - 命令大全

    如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 查找页面元素的基本方法 https://www.cnblogs.com...URL 哈希值 root() 获取根DOM元素 操作浏览器的命令 https://www.cnblogs.com/poloyy/p/13149791.html 命令 作用 go() 浏览器前进、后退...reload() 刷新页面 viewport() 控制浏览器窗口的大小和方向 visit() 访问指定的 url wait() 强制等待 操作上一条命令返回结果的命令 https://www.cnblogs.com...断言将自动重试,直到它们通过或超时 should() and() 的别名 invoke() 对上一条命令的结果执行调用方法操作 its() 获取对象的属性值 as() 取别名 within() 限定命令作用域...Cookie clearCookies() 清除所有 Cookie Cypress API 命令大全 https://www.cnblogs.com/poloyy/p/14019313.html 命令

    1.6K20

    Cypress系列(63)- 使用 Custom Commands

    , pw) => {}) Cypress.Commands.overwrite('visit', (orig, url, options) => {}) 前期准备 启动 Cypress 提供的演示项目...new LoginPage() loginInstance.visitPage() loginInstance.isTargetPage() // 调用.../操作函数的共享) cypress/support/command.js 自定义命令可以比 PageObject 模式运行更快,Cypress 和应用程序运行在同一个浏览器中,意味着 Cypress 可以直接发送请求到应用程序并设置运行测试所需要的用户状态...// 第一个参数代表需要覆盖的命令 Cypress.Commands.overwrite('visit', (originalFn, url, options) => { const domain...return originalFn(url, options) }) overwrite 覆盖 type 命令的栗子 如果在密码字段中键入内容,密码输入将在应用程序中自动屏蔽。

    2.4K72

    Cypress web自动化21-如何在多个tests之间共享cookies

    前言 Cypress 默认每个用例开始之前会清空所有的cookies,保证每个用例的独立性和干净的环境。...但是我们希望在一个js文件下写多个测试用例的时候,希望只调用一次登录, 记住cookies,后面的用例都默认是登录状态,这样测试的效率高一些。...({whitelist: ‘session_id’}) 白名单设置 详情参看官网文档https://docs.cypress.io/api/cypress-api/cookies.html#Defaults...保留cookies Cypress为您提供了一个接口,用于自动保存多个测试的Cookie。...您在这里所做的任何更改都将在每个测试的剩余部分立即生效。 把这个配置放在您的cypress/support/index.js文件中是个很好的地方,因为它是在任何测试文件执行之前加载的。

    2.2K20

    2021年软件测试领域常用工具总结(2):接口测试工具、UI测试工具

    以及Robot Framework自动化测试框架 Postman Postman一款非常流行的API调试工具,基本上做软件测试涉及到接口测试就会用到它,使用起来也很方便,填写好接口的URL,参数,Cookies...测试的开源框架,不需要使用编程语言开发测试代码,测试人员可以通过使用特定领域的语言编写测试用例。...(1)已经介绍过这款框架,这里不再重复介绍 接口Mock工具 WireMock WireMock 是一个 Http 模拟服务,其核心是 web 服务,WireMock 可以为特定的请求(stubbing...,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。...官方站点:https://www.cypress.io/ 开源代码:https://github.com/cypress-io/cypress 总结 2021年已经过去,回顾一整年,有许多的新兴接口测试工具出现在我们的视野里

    4K11

    前端自动化测试实践05—cypress-e2e入门

    端到端测试 1.1 区别 在 jest 单元测试中使用快照、API-mock 和 DOM 样式状态断言已经能够实现基础的 UI 测试,但是单元测试属于白盒测试,更关注数据的流动,而端到端测试(End To...就像官网所说,Cypress就像一个完整的烘烤箱,他还自带电池,下面是一些其它测试框架无法做到的事情: 时间旅行: Cypress在你运行测试的时候拍摄快照。...') cy.contains('type').click() // 应该存在一个包含'/commands/actions'的新URL cy.url().should('include...email.com') }) }) 可以看到用例已经被添加到控制台: [5-01.png] 点击执行用例,可以看到 chrome 被打开并自动执行用例: [5-03.png] 其中: describe和it来自...Mocha expect来自Chai 更多内容,官网提供了详尽的文档 cypress.io/>,可以阅读进一步学习 Cypress。

    5K97

    Cypress接口自动化1-发送http请求

    Cypress接口自动化1-发送http请求 1.前言 在Cypress中发起HTTP请求需要用到cy.request(),其语法如下 cy.request(method,url,body,headers...) 参数说明 url:是接口地址,同样可以结合cypress.json的baseUrl配置进行使用 body:是请求体 method:是请求方法,默认情况是GET,还可以是POST、PUT、DELETE...等 headers:请求头部 2.get请求 1.请求地址url地址,如:http://www.baidu.com 2.状态码返回200只能说明这个接口访问的服务器地址是对的,并不能说明功能OK,一般要查看响应的内容...地址,如:http://api.keyou.site:8000/user/login/ 2.获取token 注意:若无请求参数可不传 data describe("Cypress接口自动化1-发送http...请求", function () { it('post请求', function () { cy.request({ url: "http://api.keyou.site

    1.4K31

    Cypress系列(68)- request() 命令详解

    () 在 cy.visit() 前面 cypress.json // cypress.json { "baseUrl": "http://localhost:1234" } 测试代码 // url 是...,body 会有不同的形式 Cypress 设置了 Accepts 请求头,并通过 encoding 选项序列化响应体 method 请求方法,没啥好说的,默认是 GET options ?...Debugging 通过 发出的请求不会出现在开发者工具(F12)网络一栏中 .request() Cypress 实际上并未从浏览器发出XHR请求 实际上是从 Cypress Test Runner...,如果请求来自浏览器,Cypress 会自动附加本应附加的 Cookie 此外,如果响应具有 Set-Cookie 标头,则这些标头将自动在浏览器 Cookie 上重新设置 换句话说,cy.request...() 透明地执行所有基础功能,就好像它来自浏览器一样

    1.4K20

    Cypress系列(56)- 避免访问多个站点

    如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 背景 为了绕开同源策略的限制而实现的方案,...使得 Cypress 不能支持在一个测试用例文件里访问多个不同域名的 URL 如果访问了多个不同域名的站点,Cypress 会直接报错 避免访问多个站点 访问相同超域 如果访问的是同一个超域下的不同子域...,则 Cypress 允许你正常访问 it('访问同一超域下的不同子域', function () { cy.visit('https://example.cypress.io') cy.visit...('https://www.cypress.io/features') }); 测试结果 ?...访问不同超域 it('访问不同超域,会报错', function () { cy.visit('https://example.cypress.io') cy.visit('https:

    1.2K50

    Cypress系列(43)- visit() 命令详解

    /poloyy/ html 文件的相对路径,路径是相对于 Cypress 的安装目录,不需要 前缀 file:// Cypress 关于 url 的最佳实践 建议在使用 时,在 cypress.json...Cypress 测试时,添加 baseUrl 还可以节省一些时间 不添加 baseUrl 的影响 一旦遇到 cy.visit() ,Cypress 便将主窗口的 URL 切换到访问指定的 URL,首次开始测试时...是否打印日志 auth null 添加基本授权标头 failOnStatusCode true 是否在2xx和3xx以外的响应代码上标识为失败 onBeforeLoad function 在页面加载所有资源之前调用指定的方法...onLoad function 页面触发加载事件后调用 retryOnStatusCodeFailure false 当状态码是错误码时,Cypress是否自动重试,最多重试4次 retryOnNetworkFailure...true 当网络错误时,Cypress是否自动重试,最多重试4次 timeout pageLoadTimeout 最长等待 .visit() 完成的时间 正确写法 // 在新的窗口打开 URL cy.visit

    1.8K30
    领券