找一个页面,这里就用testerHome登录页简单测试下吧。
describe('login test',()=>{
it('login ', function () {
cy.visit('https://testerhome.com/')
cy.contains('登录').click()
cy.get('#user_login').type('dhsjids')
cy.get('#user_password').type('123456')
cy.get('input[name=commit]').click()
cy.contains('账号或密码错误,请重试').should('exist')
});
})
Cypress.on('uncaught:exception',(err, runnable) => {
console.log('Jerry errors!')
return false
})
写完之后运行,效果如下:
每个用例文件中在 describe('文件名/用例组名称', () => {})
内部写具体的测试用例。
其中 describe 块中的 {} 内部每一个测试用例都是一个 it('用例名称', () => {})
代码块。
对于一些相同的操作,Cypress也提供了例如TestNG一样的before/after操作,分别是:
before :所有测试用例执行前执行,当前测试文件前只执行1次
beforeEach:每个测试用例执行前执行一次
after:所有测试用例执行后执行,当前测试文件只执行1次
afterEach:每个测试用例执行后执行一次
四种均可放在describe外或者内,describe外优先级高于describe内
before(() => {
console.log('describe外的before');
})
after(() => {
console.log('describe外的after');
})
beforeEach(() => {
console.log('describe外的beforeEach');
})
afterEach(() => {
console.log('describe外的afterEach');
})
describe('login test',()=>{
before(() => {
// 通常是初始化测试环境
console.log('describe内的before');
})
after(() => {
// 恢复测试环境到执行前
console.log('describe内的after');
})
beforeEach(() => {
// 登录、打开网页、测试数据等重复操作
console.log('describe内的beforeEach');
cy.visit('https://testerhome.com/')
})
afterEach(() => {
// 还原测试前状态
console.log('describe内的afterEach');
})
it('login ', function () {
cy.contains('登录').click()
cy.get('#user_login').type('dhsjids')
cy.get('#user_password').type('123456')
cy.get('input[name=commit]').click()
cy.contains('账号或密码错误,请重试').should('exist')
});
})
Cypress.on('uncaught:exception',(err, runnable) => {
console.log('Jerry errors!')
return false
})