持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第26天,点击查看活动详情
fixture作用
加载位于文件中的一组固定数据
语法格式
cy.fixture(filePath)
cy.fixture(filePath, encoding)
cy.fixture(filePath, options)
cy.fixture(filePath, encoding, options)
参数说明
filePath
文件路径,默认会从 cypress/fixtures 文件夹下找文件
encoding
读取文件时使用的编码
- ascii
- base64
- binary
- hex
- latin1
- utf8
- utf-8
- ucs2
- ucs-2
- utf16le
- utf-16le
正确用法
// 从 users.json 文件中加载数据
cy.fixture('users').as('usersJson')
cy.fixture('logo.png').then((logo) => {
// 加载 logo.png
})
不指定文件后缀名的栗子
cy.fixture('admin').as('adminJSON')
读取文件的格式将会以下面的顺序进行解析
- cypress/fixtures/admin.json
- cypress/fixtures/admin.js
- cypress/fixtures/admin.coffee
- cypress/fixtures/admin.html
- cypress/fixtures/admin.txt
- cypress/fixtures/admin.csv、
- cypress/fixtures/admin.png
- cypress/fixtures/admin.jpg
- cypress/fixtures/admin.jpeg
- cypress/fixtures/admin.gif
- cypress/fixtures/admin.tif
- cypress/fixtures/admin.tiff
- cypress/fixtures/admin.zip
读取的数据的栗子
需要读取 cypress/fixture/users.json 文件的数据
数组+字典组成的数据结构
cypress 代码
怎么取 json 的数据,这里就怎么写
cypress 测试结果
as作用
- 起别名以供以后使用
- 可在 cy.get() 或 cy.wait() 命令中引用别名
语法格式
.as(aliasName)
正确格式
// 给第一个 li 元素起别名
cy.get('.main-nav').find('li').first().as('firstNav')
// 给网络请求的响应起别名
cy.route('PUT', 'users', 'fx:user').as('putUser')
引用别名的方式
cy.get() 或 cy.wait() 命令中使用@前缀引用的别名的名称,如 @firstNav 、 @putUser
简单的栗子
一般 .wrap() 和 as() 配对使用
cypress 代码
两个测试用例
- 获取元素,再进行判断
- 获取 wrap() 生成的对象,然后再对它进行操作
测试结果
结合 fixture() 的栗子
代码一
cy.fixture('users').as('users')
cy.log(`变量name${this.users.length}`
测试结果
为什么报错呢
- 是因为 Cypress 的命令是异步的
- 因此,无法同步访问别名的任何内容(第二行)
- 必须使用其他异步命令( 例如.then() )来访问已别名的内容
代码二
cy.fixture('users').as('users').then(function () {
cy.log(`变量name${this.users.length}`)
})
用 this. 调用别名
测试结果
结合 get() 的栗子
cypress 代码
it('via get().', () => {
cy.fixture('users.json').as('admins')
cy.get('@admins')
.then((users) => {
cy.log(`There are ${users.length} admins.`)
})
})