简介
Cypress 是一个现代化的前端端到端测试框架,它提供了丰富的 API,让我们可以轻松地编写自动化测试用例。其中,断言是测试用例中的重要组成部分,Cypress 提供了 cy.expect() 方法来进行断言。本文将详细介绍 cy.expect() 的使用方法。
cy.expect() 方法
cy.expect() 是 Cypress 中的一个断言方法,用于判断测试结果是否符合预期。它可以接收一个参数,即我们需要进行判断的值,然后根据我们传入的参数进行判断。如果判断成功,测试用例将继续执行,如果判断失败,测试用例将失败并输出错误信息。
cy.expect() 的常用断言
下面是 cy.expect() 常用的断言方法:
cy.expect().to
to 方法用于判断目标值是否等于预期值。如果相等,则测试用例继续执行,否则测试用例失败。
cy.get('#username').type('admin')
cy.get('#password').type('admin')
cy.get('#login-btn').click()
cy.url().should('eq', 'http://localhost/home')上面的例子中,我们使用 cy.url() 获取当前页面的 URL,并使用 should() 方法判断 URL 是否等于预期值。
cy.expect().not
not 方法用于判断目标值是否不等于预期值。如果不等,则测试用例继续执行,否则测试用例失败。
cy.get('#username').type('admin')
cy.get('#password').type('admin')
cy.get('#login-btn').click()
cy.url().should('not.eq', 'http://localhost/login')上面的例子中,我们使用 should('not.eq') 方法判断 URL 是否不等于预期值。
cy.expect().contain
contain 方法用于判断目标值是否包含预期值。如果包含,则测试用例继续执行,否则测试用例失败。
cy.get('#username').type('admin')
cy.get('#password').type('admin')
cy.get('#login-btn').click()
cy.get('.welcome').should('contain', '欢迎您,admin')上面的例子中,我们使用 should('contain') 方法判断页面中是否包含欢迎语句。
cy.expect().not.contain
not.contain 方法用于判断目标值是否不包含预期值。如果不包含,则测试用例继续执行,否则测试用例失败。
cy.get('#username').type('admin')
cy.get('#password').type('admin')
cy.get('#login-btn').click()
cy.get('.welcome').should('not.contain', '欢迎您,guest')上面的例子中,我们使用 should('not.contain') 方法判断页面中是否不包含欢迎语句。
cy.expect().be
be 方法用于判断目标值是否等于预期值,并且类型也相同。如果相等,则测试用例继续执行,否则测试用例失败。
cy.get('#username').type('admin')
cy.get('#password').type('admin')
cy.get('#login-btn').click()
cy.get('.user').should('be', 'admin')上面的例子中,我们使用 should('be') 方法判断页面中当前用户是否为 admin。
cy.expect().not.be
not.be 方法用于判断目标值是否不等于预期值,或者类型不同。如果不等,则测试用例继续执行,否则测试用例失败。
cy.get('#username').type('admin')
cy.get('#password').type('admin')
cy.get('#login-btn').click()
cy.get('.user').should('not.be', 'guest')上面的例子中,我们使用 should('not.be') 方法判断页面中当前用户是否不为 guest。
示例代码
下面是一个完整的示例代码,演示了如何使用 cy.expect() 进行断言:
// www.javascriptcn.com code example
describe('登录测试', () => {
it('登录成功', () => {
cy.visit('http://localhost/login')
cy.get('#username').type('admin')
cy.get('#password').type('admin')
cy.get('#login-btn').click()
cy.url().should('eq', 'http://localhost/home')
cy.get('.welcome').should('contain', '欢迎您,admin')
cy.get('.user').should('be', 'admin')
})
it('登录失败', () => {
cy.visit('http://localhost/login')
cy.get('#username').type('admin')
cy.get('#password').type('wrong-password')
cy.get('#login-btn').click()
cy.url().should('eq', 'http://localhost/login')
cy.get('.error').should('contain', '用户名或密码错误')
cy.get('.user').should('not.be', 'admin')
})
})上面的代码中,我们编写了两个测试用例,分别测试了登录成功和登录失败的情况,使用了 cy.expect() 进行断言。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d8d8a7a941bf7134f79264